Skip to main content
Glama

AI-powered HR automation using the Model Context Protocol (MCP) and Claude Desktop.

HR-Assist is an Agentic AI application that enables Claude Desktop to autonomously perform HR operations through MCP tool calling. The system demonstrates multi-step workflow orchestration by automating employee onboarding, leave management, meeting scheduling, ticket creation, and email notifications using natural language commands.

Python MCP Claude Desktop Agentic AI License


🌟 Key Highlights

  • 🤖 Agentic AI workflow powered by MCP

  • 🛠️ Modular MCP tool ecosystem for Claude Desktop

  • 🔄 Multi-step autonomous task orchestration

  • 📧 Automated email notifications

  • 🎫 IT/Admin ticket automation

  • 📅 Meeting scheduling

  • 🌴 Leave management

  • 🧩 Modular service-oriented architecture

Portfolio Project: This repository was built to demonstrate practical Agentic AI development, MCP server implementation, workflow automation, and tool-calling capabilities for GenAI and AI/ML Engineering roles.

Related MCP server: HR-Assist

📑 Table of Contents


🏗️ System Architecture

flowchart LR

    U[User] --> C[Claude Desktop]

    C --> M[MCP Server]

    M --> E[Employee Manager]
    M --> L[Leave Manager]
    M --> T[Ticket Manager]
    M --> ME[Meeting Manager]
    M --> EM[Email Service]

    E --> D[(In-Memory Data)]
    L --> D
    T --> D
    ME --> D

    EM --> SMTP[SMTP Email Server]

Architecture Overview

The project follows a modular service-oriented architecture where Claude Desktop communicates with the MCP server through the Model Context Protocol (MCP). The server exposes multiple HR tools that operate on independent service modules responsible for employee management, leave tracking, meetings, ticketing, and email notifications.

For simplicity and portability, the application uses in-memory data storage seeded with sample employee records at startup. This allows the entire onboarding workflow to be demonstrated without requiring external databases or infrastructure.

🤖 Agent Workflow

The onboarding process is executed as a multi-step AI workflow, where Claude Desktop interprets the user's request, selects the appropriate MCP tools, and coordinates them to complete the entire onboarding process autonomously.

flowchart TD

A[Natural Language Request]
--> B[Claude Desktop]

B --> C[MCP Server]

C --> D{Task Planning}

D --> E[Add Employee]

E --> F[Generate Employee Credentials]

F --> G[Send Welcome Email]

G --> H[Notify Manager]

H --> I[Create IT & Admin Tickets]

I --> J[Schedule Introductory Meeting]

J --> K[Return Final Summary]

Workflow Explanation

Unlike traditional automation scripts that execute predefined functions, the AI agent dynamically determines which MCP tools to invoke based on the user's natural language request.

For a single onboarding request, the agent autonomously:

  1. Understands the user's intent.

  2. Plans the sequence of required actions.

  3. Invokes the appropriate MCP tools.

  4. Passes relevant context between tool calls.

  5. Executes the onboarding workflow.

  6. Returns a consolidated summary after all tasks are completed.

This demonstrates tool calling, workflow orchestration, context propagation, and Agentic AI reasoning using the Model Context Protocol (MCP).

✨ Features

🤖 AI-Powered Employee Onboarding

Automate the complete onboarding process using a single natural language request.

  • Add new employees to the HRMS

  • Generate employee credentials

  • Send personalized welcome emails

  • Notify the reporting manager

  • Create onboarding tickets (Laptop, ID Card, etc.)

  • Schedule introductory meetings


🧑‍💼 Employee Management

Manage employee information through MCP tools.

  • Retrieve employee details

  • View employee profiles

  • Access manager and contact information


🌴 Leave Management

Simplify leave tracking and requests.

  • Check available leave balance

  • View leave history

  • Apply for leave


📅 Meeting Management

Coordinate employee meetings directly from Claude Desktop.

  • Schedule meetings

  • View upcoming meetings

  • Cancel existing meetings


🎫 Ticket Management

Automate IT and administrative requests.

  • Create onboarding tickets

  • Track existing tickets

  • Update ticket status


📧 Email Automation

Keep employees and managers informed automatically.

  • Welcome emails

  • Manager notifications

  • General email communication


⚡ Natural Language Interface

Interact with the HR system using plain English instead of manually invoking individual tools.

Example:

"Onboard Karan Mehta under Vikram Singh."

"Schedule a meeting for Rahul Sharma."

"How many leaves does Priya Verma have remaining?"

🧠 AI Concepts Demonstrated

This project showcases several core concepts used in modern Generative AI and Agentic AI applications.

Concept

Implementation

Model Context Protocol (MCP)

Exposes HR operations as MCP tools that Claude Desktop can discover and invoke.

Agentic AI

Executes complete HR workflows from a single natural language request.

Tool Calling

Enables the LLM to invoke structured backend tools instead of generating text alone.

Workflow Orchestration

Coordinates multiple dependent tasks such as employee creation, email notifications, ticket generation, and meeting scheduling.

Context Propagation

Passes employee information between successive tool calls during workflow execution.

Natural Language Interface

Allows users to interact with the HR system using conversational prompts instead of traditional UI forms.

Function-Based Tool Design

Each HR operation is exposed as an independent, reusable MCP tool.

Service-Oriented Architecture

Business logic is separated into modular services for maintainability and scalability.

Prompt-Driven Automation

Complex workflows are initiated through a single user prompt interpreted by Claude Desktop.

Email Automation

Integrates automated notifications into the onboarding workflow.

Why MCP?

Instead of building custom APIs or tightly coupling the AI model with backend services, this project leverages the Model Context Protocol (MCP) to expose HR functionality as standardized tools.

This enables Claude Desktop to:

  • Discover available tools automatically

  • Invoke tools securely through a standardized interface

  • Chain multiple tool calls into autonomous workflows

  • Extend the system with new capabilities without modifying the AI client

This design demonstrates how MCP simplifies the development of modular, extensible, and interoperable AI applications.

🛠️ Available MCP Tools

The MCP server exposes a collection of specialized tools that Claude Desktop can invoke to perform HR operations. Each tool is designed to handle a single responsibility, making the system modular, reusable, and easy to extend.

Category

Tool

Description

👤 Employee Management

get_employee_details

Retrieve an employee's ID, email, manager, and profile information.

👤 Employee Management

add_employee

Register a new employee in the HRMS.

🌴 Leave Management

get_employee_leaves

Check an employee's remaining leave balance.

🌴 Leave Management

get_leave_history

View an employee's historical leave records.

🌴 Leave Management

apply_leaves

Submit a leave request for specified dates.

📅 Meeting Management

schedule_meeting

Schedule a meeting between employees.

📅 Meeting Management

cancel_meetings

Cancel an existing meeting.

📅 Meeting Management

get_meetings

Retrieve all scheduled meetings for an employee.

🎫 Ticket Management

create_ticket

Raise IT or administrative requests such as laptops or ID cards.

🎫 Ticket Management

list_ticket

Retrieve all tickets associated with an employee.

🎫 Ticket Management

update_ticket_status

Update the status of an existing ticket.

📧 Communication

send_email

Send automated email notifications.


Example Tool Chain

A single onboarding request triggers multiple MCP tools behind the scenes.

User Prompt
      │
      ▼
add_employee
      │
      ▼
send_email
      │
      ▼
create_ticket
      │
      ▼
create_ticket
      │
      ▼
schedule_meeting
      │
      ▼
Return Final Summary

This demonstrates how Claude Desktop can orchestrate multiple independent MCP tools to complete a complex HR workflow from a single natural language request.

🛠️ Tech Stack

Category

Technologies

Programming Language

Python 3.11+

AI Framework

Model Context Protocol (MCP)

AI Client

Claude Desktop

Package Manager

uv

Communication

SMTP (Email Notifications)

Data Storage

In-Memory Data Structures

Configuration

JSON

Architecture

Modular Service-Oriented Design

⚙️ Installation

Prerequisites

Before getting started, ensure you have the following installed:

  • Python 3.11+

  • uv package manager

  • Claude Desktop

  • A valid email account with an App Password (required for sending automated emails)


1. Clone the Repository

git clone <repository-url>
cd hr-assist

2. Install Dependencies

Initialize the project:

uv init

Install the required MCP packages:

uv add "mcp[cli]"

3. Configure Claude Desktop

Locate your claude_desktop_config.json file and add the following MCP server configuration:

{
  "mcpServers": {
    "hr-assist": {
      "command": "<YOUR_UV_EXECUTABLE_PATH>",
      "args": [
        "--directory",
        "<YOUR_PROJECT_DIRECTORY_PATH>",
        "run",
        "server.py"
      ],
      "env": {
        "EMAIL": "<YOUR_HOST_EMAIL>",
        "EMAIL_PASS": "<YOUR_APP_PASSWORD>"
      }
    }
  }
}

Configuration Variables

Variable

Description

<YOUR_UV_EXECUTABLE_PATH>

Absolute path to the uv executable

<YOUR_PROJECT_DIRECTORY_PATH>

Absolute path to this project

EMAIL

Email address used to send automated notifications

EMAIL_PASS

App Password for your email account (recommended instead of your account password)


4. Restart Claude Desktop

After saving the configuration:

  1. Close Claude Desktop.

  2. Reopen Claude Desktop.

  3. Verify that the HR-Assist MCP Server appears in the available connectors.

💡 Note: Claude Desktop may continue running in the background even after closing the application. If your MCP server doesn't appear after updating the configuration, open Task Manager, end all Claude processes, and then launch Claude Desktop again. This ensures Claude reloads the updated MCP configuration.

🚀 Usage

Once the MCP server is configured and Claude Desktop is running, you can interact with the HR system using natural language.

Example Prompts

Onboard a New Employee

Add Karan Mehta who will report to Vikram Singh.

Check Leave Balance

How many leaves does Rahul Sharma have remaining?

Apply for Leave

Apply leave for Priya Verma from August 5 to August 7.

Schedule a Meeting

Schedule a one-on-one meeting between Rahul Sharma and Vikram Singh tomorrow at 10 AM.

Create an IT Ticket

Create a laptop replacement ticket for Karan Mehta.

The AI agent automatically selects the appropriate MCP tools and executes the requested workflow without requiring users to manually invoke individual tools.

👨‍💻 About Me

Hi, I'm Keshav Sharma 👋

I'm an aspiring Generative AI & AI/ML Engineer passionate about building intelligent systems using LLMs, Agentic AI, Model Context Protocol (MCP), Machine Learning, and Deep Learning.

I enjoy transforming AI concepts into practical applications by developing projects focused on workflow automation, intelligent agents, computer vision, and natural language processing.

This repository is part of my portfolio, showcasing my approach to designing modular, production-inspired AI systems that combine software engineering best practices with modern AI technologies.

🔗 Connect With Me

If you have feedback, collaboration ideas, or opportunities related to AI/ML or Generative AI, I'd love to connect!

📄 License

This project is licensed under the MIT License. See the LICENSE file for details.

Available Tools

12 tools
add_employeeC
Add new employee to the hrms system
:param emp_name :takes new employee name
:param manager_id :takes the manager id
returns: Confirmation message
ParametersJSON Schema
NameRequiredDescriptionDefault
emailYes
emp_nameYes
manager_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations are absent, so the description must disclose traits. It confirms a write operation ('add') and a confirmation response, but does not mention any side effects, required permissions, or constraints (e.g., duplicate names, max capacity).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short and front-loaded with the action, but the redundant ':param' lines add little value given schema. Could be more concise by removing the docstring and integrating parameter hints naturally.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having an output schema (context signal), the description only says 'returns: Confirmation message', which is vague. It does not explain error states, success indicators, or what the confirmation contains. For a creation tool with three required params, more detail is needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, meaning the description must add meaning. The docstring-style parameter notes merely restate the names ('emp_name: takes new employee name') without adding value like format, constraints, or expected values. The required 'email' parameter is not even mentioned in the description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('add new employee') and the target system ('hrms system'). No direct sibling tool creates employees, so differentiation is not needed, but the purpose is specific and immediate.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus any alternative, or what prerequisites (e.g., admin rights) are needed. The description only states the action without usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

apply_leavesB
Apply for leaves for the employee
:param emp_id: ID of an employee
:leave_dates : List of leave Dates
:returns : Leave application status message
ParametersJSON Schema
NameRequiredDescriptionDefault
emp_idYes
leave_datesYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided. The description only mentions applying leaves and returning a status message, lacking disclosure of side effects, auth needs, or constraints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short but uses non-standard colon notation for parameters. It could be more structured and formal.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of leave applications, the description lacks details on date format, error conditions, or approval processes. Output schema exists but doesn't compensate fully.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, but the description adds inline parameter docs ('emp_id: ID of an employee', 'leave_dates: List of leave Dates'), providing meaning beyond the schema's titles and types.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states 'Apply for leaves for the employee' with parameters, clearly indicating the action and resource. It distinguishes from sibling tools like get_employee_leaves and get_leave_history.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool vs alternatives or any prerequisites. Sibling tools for different leave operations exist, so such context would help.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

cancel_meetingsC
Cnacel a scheduled meeting of an employee
:param emp_id: ID of an employee
:meeting_date : Dateand time of the meeting in python datetime format
:topic : Topic of the meeting(optional)
returns :Confirmation Message
ParametersJSON Schema
NameRequiredDescriptionDefault
topicYes
emp_idYes
meeting_dateYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must disclose behavior. It only mentions the action and return of a confirmation message, lacking details on side effects, idempotency, error states, or permissions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is brief but contains a typo ('Cnacel') and uses a docstring style with colons that may not be ideal for an AI. It is minimally structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations and a simple mutation tool, the description lacks completeness: no error handling, return value details, or relation to sibling tools like schedule_meeting.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description's parameter info contradicts the schema: it marks 'topic' as optional while schema requires it. It also misrepresents 'meeting_date' format (python datetime vs schema's date-time string). Schema coverage is 0%, so description should compensate but instead introduces errors.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Cancel' and the resource 'a scheduled meeting of an employee', distinguishing it from sibling tools like schedule_meeting or get_meetings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives, prerequisites (e.g., meeting existence), or conditions under which cancellation is valid.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_ticketC
Create ticket for buying items for the employee
:param emp_name: Nane of the employee
:param item: Item Requested(example: Laptop or ID)
:param reason: reason for the request
returns : Confiramtion of Ticket Genrated
ParametersJSON Schema
NameRequiredDescriptionDefault
itemYes
emp_idYes
reasonYes

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided; the description carries the full burden. It does not disclose behavioral traits like success/failure behavior, authentication needs, or side effects. The return description is vague ('Confiramtion of Ticket Genrated').

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Very short (two sentences plus param list), but contains typos ('Nane', 'Confiramtion', 'Genrated'). The purpose is front-loaded, but the param list largely repeats the schema without adding much value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema; the return description is vague. Missing context about prerequisites (e.g., employee existence) and how the ticket creation fits into the larger toolset. With 3 required params and simple types, completeness is lacking.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so description must compensate. However, description mentions 'emp_name' while schema has 'emp_id', causing mismatch. Explanations for params are minimal and lack examples or format details.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Create ticket for buying items for the employee', specifying the verb (create) and resource (ticket for buying items). It distinguishes from sibling tools like list_ticket, update_ticket_status, add_employee, etc.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives. The description does not mention prerequisites, such as whether the employee must already exist, or contrast with other ticket-related tools.

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 the employee details by name
:param name: Name of the employee
returns employee ID or Manager ID
ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must disclose all behavioral traits. It mentions the output (employee ID or Manager ID) but does not specify side effects, error handling for missing employees, or whether it is read-only. The ambiguous 'or' in output leaves uncertainty.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very concise, consisting of a single sentence and a param line. It is front-loaded with the purpose. However, the structure could be improved by separating the return type.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple tool with one parameter and an output schema, the description is partially complete. It explains the input and basic output, but lacks details like employee details fields (beyond ID/Manager ID), behavior for non-existent names, and edge cases.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description includes a `:param name:` line explaining the parameter's meaning, adding value beyond the schema which only provides type and title. With 0% schema coverage, this is helpful. However, it could be more detailed (e.g., format).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it retrieves employee details by name, with a specific verb ('Get') and resource ('employee details'). Among sibling tools, it is distinct as a retrieval operation, though no explicit differentiation is provided.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives like add_employee or list_ticket. The description does not mention prerequisites or context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_employee_leavesC
Get the leave balance of an Employee
:param emp_id: Id of an employee
:retuns : Remaning or the total number of leaves employee have or left
ParametersJSON Schema
NameRequiredDescriptionDefault
emp_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the full burden. It implies a read operation ('Get') but does not explicitly state safety, idempotency, or any behavioral traits. The return note is confusing ('Remaning or the total number of leaves employee have or left') and lacks clarity.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short and to the point, but it is poorly structured with a mix of prose and docstring-style comments. The return note has typos ('Remaning', 'retuns') which detract from clarity. It is concise but not well-organized.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with one parameter and an existing output schema, the description covers the basic purpose. However, it lacks usage guidance, sibling differentiation, and a clear explanation of the return value. The return note attempts to describe the output but is confusing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 adds a docstring for emp_id: 'Id of an employee', which provides basic context beyond the schema's 'Emp Id' property. However, this is minimal and does not explain format or constraints.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states 'Get the leave balance of an Employee', which clearly identifies the verb (Get) and resource (leave balance). However, it does not distinguish this tool from the sibling 'get_leave_history', which likely retrieves similar leave data, so it lacks differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description offers no guidance on when to use this tool versus alternatives like 'get_leave_history' or 'apply_leaves'. There is no mention of prerequisites, context, or when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_leave_historyC
Get the history of leaves of an Employee
:param emp_id: Id of an Employee
:returns : Leaves history messsage
ParametersJSON Schema
NameRequiredDescriptionDefault
emp_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description must carry full behavioral disclosure. It only states returns a message, not whether it's read-only, requires auth, or scope of data. Minimal info.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is brief but includes unnecessary colons and formatting. Could be more focused, but it's not overly long. Adequate but not efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simplicity and existence of an output schema, the description missing details about filtering or history scope. Does not differentiate from sibling 'get_employee_leaves' well enough.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, but description adds ':param emp_id: Id of an Employee', which is slightly more than the schema's title 'Emp Id'. However, it's still minimal and obvious.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Get the history of leaves of an Employee', specifying the verb and resource. It distinguishes from sibling 'get_employee_leaves' by indicating 'history', implying past records.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this vs alternatives like 'get_employee_leaves' or 'apply_leaves'. The description does not mention context or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_meetingsA
Get the list of meetings scheduled for employee
:param emp_id: ID of the employee
:returns: List of the Meetings
ParametersJSON Schema
NameRequiredDescriptionDefault
emp_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It only states it returns a list of meetings, without disclosing side effects, error behavior, or access requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise, using a single sentence plus a docstring, with no redundant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the description does not need to detail return values. However, it lacks context on error handling and usage constraints, making it minimally adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, but the description adds value by documenting the parameter with ':param emp_id: ID of the employee', clarifying its purpose beyond the schema's title 'Emp Id'.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Get' and the resource 'list of meetings scheduled for employee', effectively distinguishing it from sibling tools like schedule_meeting (create) and cancel_meetings (delete).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus alternatives; it relies on implied context. The description does not mention prerequisites or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_ticketC
Get the list of the tickets
:param emp_id: Id of employee
:param status: status of the ticket(optional)
:returns : list of the tickets
ParametersJSON Schema
NameRequiredDescriptionDefault
emp_idYes
statusYes

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must disclose behavioral traits. It only states it returns a list of tickets, but omits side effects, authentication needs, rate limits, or any schema details. This is insufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise (two sentences plus param docs) and front-loaded with purpose. The docstring format is slightly verbose but acceptable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, no annotations, and a simple list operation, the description is too minimal. It lacks details on ticket fields, pagination, ordering, or any filtering beyond emp_id and status.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds parameter meaning via docstring comments for emp_id and status. However, it contradicts the input schema: description marks status as optional, but schema requires it. Also, schema coverage is 0%, so description partially compensates but error reduces score.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Get the list of the tickets' with a verb and resource. However, it does not distinguish from sibling tools like 'create_ticket' or 'get_employee_details', and the specific scope (tickets for a given employee) is implicit via parameters.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives such as 'create_ticket' or 'update_ticket_status'. There are no explicit conditions, prerequisites, or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

schedule_meetingC
Schedule a meeting for an employee,
:param emp_id: ID of the employee
:param meeting_datetime : Date and time of the meeting in python datetime format
:param topic: Topic of the meeting
:returns : Confirmation Message
ParametersJSON Schema
NameRequiredDescriptionDefault
topicYes
emp_idYes
meeting_datetimeYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description must carry behavioral context. It states 'returns Confirmation Message' but lacks details about side effects (e.g., conflict checking, notifications), permissions, or constraints. Insufficient for a scheduling action.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is short but uses Python docstring format with ':param' syntax, which is unusual for an MCP tool and may confuse AI agents. No wasted words, but formatting is suboptimal for clarity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (3 parameters), the description covers basic action but lacks details about edge cases (e.g., invalid employee, past dates). Output schema exists but is not described beyond a vague 'Confirmation Message'. Incomplete for robust agent usage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so description adds minimal meaning: clarifies emp_id as 'ID of the employee', meeting_datetime format as 'python datetime format', and topic as 'Topic of the meeting'. This provides some semantics beyond the schema but is not exhaustive.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states 'Schedule a meeting for an employee', which is a specific verb and resource. However, it does not differentiate from sibling tools like get_meetings or cancel_meetings, but the purpose is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives. Does not mention prerequisites, when not to use, or how it differs from other meeting-related tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

send_emailD
ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes
htmlNo
subjectYes
to_emailYes

TDQS

D1/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Tool has no description.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness1/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Tool has no description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Tool has no description.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Tool has no description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose1/5

Does the description clearly state what the tool does and how it differs from similar tools?

Tool has no description.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Tool has no description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_ticket_statusC
Update the status of the ticket
:param emp_id: Id od the employee
:status : Status od the ticket
returns : Confirmation message 
ParametersJSON Schema
NameRequiredDescriptionDefault
statusYes
ticket_idYes

TDQS

C2.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, and the description only says 'returns : Confirmation message', which is insufficient. No disclosure of idempotency, destructive nature, or other behavioral traits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short but includes poorly formatted param lines with typos. It is not well-structured for quick parsing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations, no output schema, and 0% schema coverage, the description is very incomplete. It lacks details on response, required permissions, and error conditions.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%. The description mentions a non-existent param 'emp_id' and provides no explanation for 'ticket_id' or 'status'. No guidance on valid status values or formats.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Update the status of the ticket', which is a specific verb+resource pair. It distinguishes from sibling tools like create_ticket and list_ticket. However, the presence of an incorrect param 'emp_id' (not in schema) slightly reduces clarity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives. No context about prerequisites, side effects, or when not to use it.

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. Dates show when Glama detected each change.

  1. 12 tool updatesv0.1.0
    • First observedadd_employee
    • First observedapply_leaves
    • First observedcancel_meetings
    • First observedcreate_ticket
    • First observedget_employee_details
    • First observedget_employee_leaves
    • First observedget_leave_history
    • First observedget_meetings
    • First observedlist_ticket
    • First observedschedule_meeting
    • First observedsend_email
    • First observedupdate_ticket_status

TDQS

C2.7/5.0
Disambiguation4/5

Tools cover distinct HR areas (employee info, tickets, meetings, leaves), with clear purposes. The only ambiguity is 'send_email', which lacks description and could overlap with notifications, but overall tools are distinct.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern (e.g., add_employee, get_meetings, create_ticket). Minor singular/plural variations (e.g., get_meetings vs schedule_meeting) do not detract from overall coherence.

Tool Count5/5

With 12 tools covering employee management, ticketing, meetings, and leave handling, the count is well-scoped for an HR assistant. No redundant or excessive tools.

Completeness3/5

The tool surface covers key workflows but has notable gaps: no employee update/delete, no ticket deletion, no meeting update, and no leave cancellation. These missing operations could cause agent failures in some scenarios.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/yash-s27/HR-assist-MCP-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server