atliq-hrms-assist
Send emails through Gmail's SMTP server for notifications such as welcome emails, meeting invites, and leave confirmations.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@atliq-hrms-assistOnboard new hire Rahul Verma, manager ID 2, email rahul@atliq.com"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
š¢ Atliq HRMS Assist ā MCP Server
An AI-powered Human Resource Management System (HRMS) built as a Model Context Protocol (MCP) server. It connects directly to Claude Desktop, allowing you to manage employees, leaves, meetings, tickets, and emails using natural language.
š Table of Contents
Related MCP server: mcp-practice
š Overview
Atliq HRMS Assist is an MCP server that exposes HR management capabilities as tools and prompts for AI assistants. Built with FastMCP and Pydantic, it enables Claude to perform real HR operations ā from onboarding employees to scheduling meetings ā all through natural language.
⨠Features
Category | Capability |
š¤ Employee Management | Add employees, search by name, get details |
š“ Leave Management | Check balances, apply leaves, view history |
š Meeting Scheduler | Schedule, view, and cancel meetings |
š« Ticket System | Create and update equipment/IT request tickets |
š§ Email Notifications | Send welcome emails, meeting invites, leave confirmations |
š¤ AI Prompts | Pre-built prompts for onboarding, leave, and meeting workflows |
š Project Structure
atliq-hrms-assist/
āāā HRMS/
ā āāā __init__.py # Exports all managers and schemas
ā āāā employee_manager.py # Employee CRUD and search
ā āāā leave_manager.py # Leave balance and application
ā āāā meeting_manager.py # Meeting scheduling and cancellation
ā āāā ticket_manager.py # Equipment/IT ticket management
ā āāā schemas.py # Pydantic data models
āāā src/
ā āāā atliq_hrms_assist/
ā āāā __init__.py
āāā email_sender.py # SMTP email utility
āāā server.py # MCP server ā tools & prompts
āāā utils.py # Seed data for demo employees
āāā pyproject.toml # Project dependencies
āāā .env # Environment variables (not committed)ā Prerequisites
Python 3.12+
uv package manager
Claude Desktop (for MCP integration)
A Gmail account with an App Password (for email sending)
āļø Installation
1. Clone the repository
git clone https://github.com/Ayush-og/atliq-hrms-assist.git
cd atliq-hrms-assist2. Install dependencies using uv
uv syncOr install manually:
uv add "mcp[cli]<2.0.0" pydantic python-dotenvš Configuration
Create a .env file in the project root:
CB_EMAIL=your_gmail_address@gmail.com
CB_EMAIL_PWD=your_gmail_app_passwordNote: Use a Gmail App Password, not your regular Gmail password. Enable 2FA on your account first.
š Running the MCP Server
Test that the server runs without errors:
uv run python server.pyš Connecting to Claude Desktop
Open Claude Desktop ā Settings ā Developer ā Edit Config.
Add the following to
claude_desktop_config.json:
{
"mcpServers": {
"atliq-hr-assist": {
"command": "C:\\Users\\<your-username>\\.local\\bin\\uv.exe",
"args": [
"--directory",
"C:\\path\\to\\atliq-hrms-assist",
"run",
"python",
"server.py"
]
}
}
}Save and restart Claude Desktop.
The
atliq-hr-assistconnector will appear as š¢ Connected.
š ļø Available Tools
š¤ Employee Tools
Tool | Description | Parameters |
| Add a new employee |
|
| Get employee details by name |
|
š“ Leave Manager Tools
Tool | Description | Parameters |
| Check remaining leave days |
|
| Apply for leave on specific dates |
|
| View past leave records |
|
š Meeting Scheduler Tools
Tool | Description | Parameters |
| Schedule a meeting |
|
| View all scheduled meetings |
|
| Cancel an existing meeting |
|
š« Ticket Tools
Tool | Description | Parameters |
| Raise an equipment/IT request |
|
| Update ticket status |
|
š§ Email Tool
Tool | Description | Parameters |
| Send email to one or more recipients |
|
š¤ Available Prompts
These are pre-built multi-step workflows you can invoke from Claude Desktop via "Add from atliq-hr-assist".
1. onboard_new_employee
Onboards a new employee end-to-end.
Input | Description |
| Full name of the new employee |
| Full name of the reporting manager |
Steps performed automatically:
Adds employee to HRMS
Sends welcome email with login credentials
Notifies the manager
Raises equipment tickets (laptop, ID card, etc.)
2. apply_leave_request
Processes a leave application for an employee.
Input | Description |
| Full name of the employee |
| Dates for leave (e.g. |
Steps performed automatically:
Looks up employee ID
Checks leave balance
Applies leave if balance is sufficient
Sends confirmation email
3. schedule_meeting_request
Schedules a meeting and sends invites.
Input | Description |
| Employee's full name |
| Manager's full name |
| ISO datetime (e.g. |
| Meeting subject |
Steps performed automatically:
Looks up both employee and manager IDs
Schedules the meeting
Sends invitation email to both parties
š” Usage Examples
Ask Claude in natural language:
"Onboard Peter Pandey with Tony Sharma as his manager.""Apply leave for Tony Sharma on August 22 and 23, 2026.""Schedule a 1:1 meeting between Peter Pandey and Tony Sharma on August 20 at 10 AM.""Check leave balance for employee E004.""Create a ticket for Peter Pandey to get a new laptop."š§āš» Author
Ayush ā @Ayush-og
š License
This project is open source and available under the MIT License.
Available Tools
11 toolsadd_employeeC
Add a new employee to the HRMS system.
| Name | Required | Description | Default |
|---|---|---|---|
| Yes | |||
| emp_name | Yes | ||
| manager_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full burden of behavioral disclosure. It only states the action 'add a new employee' and does not mention potential side effects, validation rules, errors, or required context such as checking if the manager_id exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence that directly states the tool's purpose. It is appropriately concise, front-loaded, and contains no unnecessary words or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Although an output schema exists (reducing the need to describe return values), the description lacks important contextual information such as preconditions, error handling, and the significance of the required parameters. For a simple create tool, the description is adequate for basic intent but incomplete for robust agent decision-making.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 0% and the description does not explain any of the parameters. The meaning of 'manager_id' and 'email' is not clarified beyond its name, and 'emp_name' is only implicitly understood. The description adds no value to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action ('Add a new employee') and resource ('HRMS system'), which distinguishes it from sibling tools that handle other domains like leave, meetings, tickets, and email. It is concise and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, nor does it mention any prerequisites or special conditions. The intended usage must be inferred entirely from the tool's name and one-line description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apply_leaveA
Apply for leave on specified dates.
:param employee_id: Employee ID (e.g. 'E004')
:param leave_dates: List of dates in YYYY-MM-DD format (e.g. ['2026-08-15', '2026-08-16'])
:return: Confirmation message with remaining balance
| Name | Required | Description | Default |
|---|---|---|---|
| employee_id | Yes | ||
| leave_dates | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It states the action and return value but does not disclose side effects (e.g., deducting leave balance, potential rejection for overlapping dates) or any constraints like minimum notice or approval requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a compact docstring with three lines: action, parameters with examples, and return. No redundant information or unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter tool with an output schema, the description covers the essentials. However, it lacks context about leave policies (e.g., overlapping dates, maximum days) and does not warn about potential failures, making it only marginally adequate given the absence of annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema provides only types and titles, so the description adds value by giving examples ('E004') and date format ('YYYY-MM-DD') for leave_dates. It also clarifies the return type (confirmation with remaining balance), compensating for the 0% schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Apply for leave') and the resource ('leave on specified dates'). It distinguishes from sibling tools like get_leave_balance and get_leave_history, which are read-only queries.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when an employee needs to request leave, but it does not explicitly mention checking leave balance first or compare with alternative leave-related tools. No explicit when-not-to-use guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cancel_meetingB
Cancel a scheduled meeting for an employee.
| Name | Required | Description | Default |
|---|---|---|---|
| topic | No | ||
| emp_id | Yes | ||
| meeting_dt | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the full burden of behavioral disclosure. It only says 'cancel', which signals mutation, but does not mention side effects like attendee notifications, reversibility, permissions, or behavior when the meeting does not exist.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. It states the action and target clearly, earning top marks for conciseness even though brevity limits other dimensions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having an output schema, the tool description lacks essential context for a cancellation operation: how to identify the exact meeting, whether topic disambiguates, what side effects occur, and any required preconditions. The description alone is insufficient for reliable invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description adds no meaning for emp_id, meeting_dt, or topic. The agent receives no help understanding parameter formats, requirements, or optionality beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'cancel' and clearly identifies the resource: a scheduled meeting for an employee. It distinguishes the tool from siblings like schedule_meeting and get_meetings by stating the cancellation action directly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The verb 'cancel' implies when to use the tool, but there is no explicit guidance about prerequisites, exclusions, or alternatives. The context is clear but entirely implied, not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_ticketA
Create a support or equipment request ticket for an employee (e.g., Laptop, ID Card).
:param emp_id: Employee ID (e.g. 'E004')
:param item: Name of the requested item or equipment
:param reason: Reason for the request
:return: Confirmation string with ticket ID
| Name | Required | Description | Default |
|---|---|---|---|
| item | Yes | ||
| emp_id | Yes | ||
| reason | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral disclosure burden. It states the operation is a creation and mentions the return value (confirmation string with ticket ID), which is useful. However, it lacks any caveats about prerequisites, side effects, or permissions, though the operation is simple and non-destructive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded with the core purpose. The parameter listings and return value are provided in a structured docstring format, with no redundant or extraneous text. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (3 required params, no enums) and an output schema exists, so the description's coverage of parameters and return is sufficient. The main gap is the lack of explicit usage guidance, but the description is otherwise complete for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It does so by explicitly documenting each parameter: emp_id with an example ('E004'), item as the requested item, and reason as the request reason. This adds meaning well beyond the bare schema property names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb-object pair ('Create a support or equipment request ticket') and gives concrete examples (Laptop, ID Card). This clearly distinguishes it from sibling tools like update_ticket_status and get_employee_details.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies the tool is for creating new tickets, which is evident from the action 'Create' and the parameters. However, it does not explicitly state when not to use it or mention alternative tools, such as using update_ticket_status for modifications. It gives clear context but no exclusions or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_employee_detailsB
Get employee details by name.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavioral traits. It only says 'Get employee details by name' with no information about return format, error handling, permissions, or side effects. The read-only nature is only implied by the tool name, not explicitly stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence with no wasted words, but it is under-specified. It essentially restates the tool name and parameter without adding useful structure or detail, which is closer to under-specification than effective conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple getter with one parameter and an output schema, the description covers the basic necessity, but lacks any guidance on edge cases like employee not found or name matching behavior. The existence of an output schema mitigates the need to explain return values, but more context would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has one required parameter 'name' with type string and no description (0% coverage). The description adds that the lookup is 'by name', clarifying the parameter's role as the search key. However, it does not specify format, exactness, or case sensitivity, so the added meaning is minimal.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get employee details by name' clearly identifies the action (get), resource (employee details), and lookup method (by name). It distinguishes itself from sibling tools like add_employee or get_leave_balance, which operate on different resources or purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage context is only implied: use when you need employee details and have a name. There are no explicit when-to-use or when-not-to-use instructions, nor mention of alternative tools, making this a minimal viable but not highly guided description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_leave_balanceA
Get the current leave balance for an employee.
| Name | Required | Description | Default |
|---|---|---|---|
| employee_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. The verb 'Get' clearly signals a read-only, non-destructive operation. It does not detail error handling or return format, but for a simple getter this is sufficient and nothing contradicts the absence of annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no waste. It states exactly what the tool does without redundant detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (single required parameter, output schema present), the description is adequately complete. It communicates the purpose and the employee reference, and the output schema covers return values. It does not mention edge cases like invalid employee IDs, but such details are not essential for this basic getter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% parameter description coverage, but the description says 'for an employee' which clarifies that employee_id identifies the employee. This adds meaning beyond the raw schema and compensates for the lack of property documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get'), the resource ('leave balance'), and the target ('for an employee'). It is specific and distinguishes from siblings like get_leave_history and get_employee_details.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use when you need the current leave balance, but it does not explicitly contrast with alternatives such as get_leave_history. No when-not-to-use guidance is provided, so usage is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_leave_historyA
Retrieve past leave history for an employee.
| Name | Required | Description | Default |
|---|---|---|---|
| employee_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full responsibility for disclosing behavior. It only restates the basic read operation without mentioning permissions, side effects, or specific behaviors like which leave types are included or date ranges. Since 'retrieve' implies read-only, it is somewhat transparent but lacks depth.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, straightforward sentence with no redundant words. It is well-structured and front-loaded with the action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has one parameter and an output schema, so the description is minimally sufficient. However, it lacks usage guidelines and behavioral context, and does not explicitly distinguish itself from similar leave-related tools. Given the simplicity, it is adequate but not thorough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description says 'for an employee', which clarifies that the employee_id parameter identifies the employee whose history is retrieved. This adds some meaning beyond the bare schema, but with 0% schema description coverage, more explicit parameter guidance would be beneficial. The parameter name itself is largely self-explanatory.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Retrieve' and identifies the resource 'past leave history' with the target 'an employee'. This clearly differentiates it from sibling tools like get_leave_balance and apply_leave.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage (when you need an employee's past leave history) but provides no explicit context, exclusions, or alternatives. It does not tell the agent when to prefer this tool over get_leave_balance or other leave-related tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_meetingsC
Get all scheduled meetings for an employee.
| Name | Required | Description | Default |
|---|---|---|---|
| employee_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden for behavioral disclosure. It only states that the tool 'gets' scheduled meetings, implying a read-only operation, but does not mention the time range, permission requirements, or how results are ordered. This leaves significant ambiguity for an agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence that front-loads the action and resource. It is concise and free of fluff, though it may be slightly too terse given the lack of behavioral details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one required parameter and an output schema, the description is functionally adequate for basic invocation. However, it omits the temporal scope of 'scheduled meetings' and provides no usage context relative to sibling tools, leaving gaps that an agent would need to infer.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has one parameter (employee_id) with 0% description coverage. The description says 'for an employee,' which vaguely connects to employee_id, but it adds no detail about the expected format, type of identifier, or any constraints. The schema already provides the name and type, so the description contributes minimal extra meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the action ('Get') and resource ('scheduled meetings for an employee'), which distinguishes it from sibling tools like schedule_meeting and cancel_meeting. However, it does not specify whether 'all' means upcoming, past, or both, so it is not maximally specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus alternatives such as schedule_meeting or cancel_meeting. The description does not state prerequisites, typical use cases, or exclusions, leaving the agent to infer from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
schedule_meetingA
Schedule a meeting for an employee.
:param emp_id: Employee ID (e.g. 'E004')
:param meeting_dt: Scheduled Date and Time in ISO format (e.g. '2026-08-15T10:00:00')
:param topic: Meeting subject or topic
:return: Confirmation string
| Name | Required | Description | Default |
|---|---|---|---|
| topic | Yes | ||
| emp_id | Yes | ||
| meeting_dt | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions the return type but does not disclose side effects, prerequisites, or whether it checks for conflicts, permissions, or other constraints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a compact docstring with a clear one-line summary followed by a concise parameter list. No unnecessary words; every line provides value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with three string parameters, and the output schema exists (though return is also described). However, it lacks usage guidelines and behavioral details like conflict handling or employee validation, making it adequate but with gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description compensates well by providing parameter examples and formats (e.g., emp_id 'E004', meeting_dt ISO format). This adds meaning beyond the bare schema, though it could include more constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Schedule a meeting for an employee') with a specific verb and resource, and it distinguishes itself from sibling tools like get_meetings and cancel_meeting.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The purpose implies when to use it (scheduling a meeting), but there is no explicit guidance on when not to use it or alternatives, such as cancel_meeting for cancellations or get_meetings for viewing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_emailB
Send an email to one or more recipients.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| subject | Yes | ||
| to_emails | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose any behavioral traits such as authentication requirements, rate limits, or side effects. It only states what the tool does, not how or under what constraints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One concise sentence that communicates the core function without redundancy. It is appropriately sized, though it could be slightly more informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations and incomplete parameter coverage, the description is insufficient for an agent to fully understand when and how to use the tool. The existence of an output schema does not compensate for missing usage and behavioral context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage, and the description does not explain the subject or body parameters. It only implies that to_emails are recipients, which is already apparent from the parameter name. The description fails to add meaningful semantics for all parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the verb 'send' with the resource 'email' and clarifies that multiple recipients are supported. It clearly distinguishes from sibling tools which handle employees, leave, meetings, and tickets.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, nor any exclusions or prerequisites. It simply states the action and does not mention sister tools or contexts.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_ticket_statusA
Update the status of a ticket (Open, In Progress, Closed, Rejected).
| Name | Required | Description | Default |
|---|---|---|---|
| status | Yes | ||
| ticket_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only lists valid statuses but does not mention side effects, error handling, permissions, or what happens if the ticket does not exist. This is insufficient for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is direct and front-loaded with the core action. It wastes no words and includes the key allowed values in parentheses.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple and an output schema exists, but the description still leaves gaps about error behavior, prerequisites, and whether the status list is exhaustive. It is minimally viable but lacks the richer context expected given the absence of annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides zero descriptions for the two parameters, but the description compensates by enumerating the allowed status values, giving meaningful semantic context to the 'status' parameter. The 'ticket_id' is self-explanatory, so the description adds reasonable value beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with a specific verb 'Update' and identifies the resource as 'status of a ticket'. It also enumerates the allowed statuses (Open, In Progress, Closed, Rejected), which adds precision and distinguishes it from sibling tools like create_ticket.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implicitly conveys when to use the tool (when updating a ticket's status), but it does not explicitly state alternatives or conditions. No mention of when not to use it or how it compares to other ticket management tools, leaving usage guidance implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
11 tool updates
v0.1.0- First observed
add_employee - First observed
apply_leave - First observed
cancel_meeting - First observed
create_ticket - First observed
get_employee_details - First observed
get_leave_balance - First observed
get_leave_history - First observed
get_meetings - First observed
schedule_meeting - First observed
send_email - First observed
update_ticket_status
TDQS
Scored across 11 tools
Each tool targets a distinct resource (employee, leave, meeting, ticket, email) with a clear action. There is no overlap in functionality, even though employee identifiers vary between tools.
All tool names follow a consistent verb_noun snake_case pattern (add_, get_, apply_, schedule_, cancel_, create_, update_, send_). This uniformity makes the API predictable.
At 11 tools, the server covers multiple HR subdomains without unnecessary bloat. The count is well within the ideal range for a focused assistant.
The server covers core workflows for employees, leave, meetings, tickets, and email. However, employee update/delete and leave cancellation are missing, creating notable lifecycle gaps. Ticket viewing is also absent, though the creation and status update flow works.
Maintenance
Related MCP Connectors
- ZapierOAuthcom.zapier
Hosted MCP server connecting AI assistants to 9,000+ apps and 40,000+ actions via Zapier.
- mttrlyOAuthcom.mttrly
AI-powered incident management and server monitoring via MCP.
MCP server unifying ERPs, CRMs, APIs and knowledge base for Claude, ChatGPT and Gemini.
MCP server that lets AI assistants use all OneSchema features exposed via the public API.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceMCP-based HR automation tool that streamlines employee onboarding, leave management, and equipment requests via natural language conversations.1MIT
- FlicenseNot gradedqualityDmaintenanceMCP server for Cursor that automates HR tasks such as employee onboarding, intranet guidance, time-off and leave requests, and meeting room booking.-
- FlicenseNot gradedqualityDmaintenanceAn MCP server for interacting with an HR database, enabling querying employee data and HR operations via natural language.-
- FlicenseCqualityDmaintenanceMCP server for HR automation that enables employee onboarding workflows through Claude Desktop.12-