Public API: Public MCP

Modified on Tue, 16 Dec at 1:01 PM

 

Simployer MCP Tools - Customer Guide

Overview

The Simployer MCP (Model Context Protocol) Server enables AI assistants and applications to securely access your HR data through a standardized interface. Whether you're building custom AI solutions or integrating with platforms like Claude Desktop or ChatGPT, these tools provide seamless access to employee information, organizational structures, leave management, compensation data, and more.


What is Model Context Protocol (MCP)?

Model Context Protocol (MCP) is an open protocol that enables AI assistants to securely access external data sources and tools. The MCP server acts as a bridge between AI applications (like Claude, ChatGPT, or custom LLM solutions) and the Simployer API, providing:

• Standardized Interface: Consistent API access regardless of the AI platform
• Secure Authentication: JWT-based authentication for all requests
• Tool Discovery: Automatic discovery of available capabilities
• Structured Responses: Well-defined schemas for all operations


Key Benefits

  • AI-Ready: Works seamlessly with Claude, ChatGPT, and other MCP-compatible AI platforms
  • Secure: JWT-based authentication ensures your data remains protected
  • Comprehensive: Access to 17+ HR data modules through a unified interface
  • Standardized: Follows the open MCP protocol for consistent integration



Quick Start


Prerequisites

  • An active Simployer account
  • A JWT access token (see Authentication)
  • An MCP-compatible client (Claude Desktop, custom application, etc.)

Transport Protocols

The Simployer MCP server supports two transport methods:

• Streamable HTTP (Recommended): Modern stateless protocol using POST /mcp
- Endpoint: https://mcp-alexis.simployer.com/mcp
 - Use this for all new integrations

• Server-Sent Events (SSE) (Legacy): For backward compatibility with older MCP clients
- Endpoints: /sse and /messages
- Only use if your client requires SSE

For custom integrations, always use the Streamable HTTP endpoint at https://mcp-alexis.simployer.com/mcp.


Setting Up Claude Desktop

  1. Open Claude Desktop settings
  2. Navigate to MCP Servers configuration
  3. Add the following configuration:

{  "mcpServers": {    "alexishr": {      "command": "npx",      "args": ["-y", "@modelcontextprotocol/server-everything"],      "env": {        "MCP_SERVER_URL": "https://mcp-alexis.simployer.com/mcp",        "MCP_AUTH_TOKEN": "YOUR_TOKEN"      }    }  } } 

  1. Restart Claude Desktop
  2. Test by asking: "List all employees in the Engineering department"


Setting Up a Custom Client

Use the MCP endpoint with your JWT token:

curl -X POST https://mcp-alexis.simployer.com/mcp \  -H "Content-Type: application/json" \  -H "Authorization: Bearer YOUR_TOKEN" \  -d '{    "jsonrpc": "2.0",    "id": "1",    "method": "tools/list"  }' 


Authentication

All requests to the Simployer MCP server require a valid JWT (JSON Web Token) from your Simployer account.


Obtaining Your Token

  1. Log in to your Simployer account
  2. Navigate to Settings → Access Tokens
  3. Generate or retrieve your token
  4. Copy the token (you'll need it for configuration)


Using Your Token

Include the token in the Authorization header for all requests:

Authorization: Bearer YOUR_JWT_TOKEN 


Security Best Practices

  • Keep your token secure and never commit it to version control
  • Rotate tokens regularly
  • Use environment variables to store tokens
  • Revoke tokens immediately if compromised


Available Modules

The Simployer MCP server provides access to the following HR data modules:

Module

Tools Available

Primary Use Cases

Employee Management
8 tools
Employee lookup, analytics, updates
Leave Management
3 tools
Leave tracking, approval, analysis
Compensation
9 tools
Salary, bonus, and allowance management
Organizational Structure
6 tools
Departments, offices, teams, cost centers
Timesheet Management
5 tools
Time tracking, entry management
Project Management
3 tools
Project tracking and resource planning
Employment Management
6 tools
Employment records and types
Scope Management
7 tools
Feature access, policy scopes
Additional Modules
5 tools
Children, work weeks, leave transactions



Tool Reference


Employee Management

getAllEmployees

Retrieves a list of employees with optional filtering and pagination.


Parameters:

Parameter

Type

Required

Default

Description

limit
number
No
500
Maximum number of results to return
filters
object
No
-
Filter criteria (see below)


Available Filters:

Filter

Type

Description

active
boolean
Filter by employee's active status
title
string
Filter by employee's job title
division
string
Filter by employee's division
organization
string
Filter by employee's organization
employeeNumber
string
Filter by employee's number
firstName
string
Filter by employee's first name
lastName
string
Filter by employee's last name
nationality
string
Filter by employee's nationality
departmentId
string
Filter by department ID
officeId
string
Filter by office ID

Example Request:

{  "jsonrpc": "2.0",  "id": "1",  "method": "tools/call",  "params": {    "name": "getAllEmployees",    "arguments": {      "limit": 100,      "filters": {        "active": true,        "departmentId": "dept-123"      }    }  } } 

Common Use Cases:

  • "Show me all active employees in the Engineering department"
  • "List employees in the New York office"
  • "Find employees with the title 'Senior Developer'"


getEmployeeById

Fetches a specific employee by their unique ID.

Parameters:

Parameter

Type

Required

Default

Description

employeeId
string
Yes
-
The unique identifier of the employee

Example Request:

{  "jsonrpc": "2.0",  "id": "2",  "method": "tools/call",  "params": {    "name": "getEmployeeById",    "arguments": {      "employeeId": "12345"    }  } } 


updateEmployee

Updates specific fields of an employee in the Simployer system.

Parameters:

Parameter

Type

Required

Default

Description

employeeId
string
Yes
-
The unique identifier of the employee
data
object
Yes
-
Object containing fields to update

Updatable Fields:

Field

Type

Description

title
string
Employee's job title
departmentId
string
ID of the employee's department
division
string
Employee's division
organization
string
Employee's organization

Example Request:

{  "jsonrpc": "2.0",  "id": "3",  "method": "tools/call",  "params": {    "name": "updateEmployee",    "arguments": {      "employeeId": "12345",      "data": {        "title": "Senior Developer",        "division": "Engineering"      }    }  } } 


Additional Employee Tools

  • getEmployeeCountByDepartment - Count employees by department
  • getEmployeeCountByOffice - Count employees by office
  • getEmployeeCountByDivision - Count employees by division
  • calculateTurnover - Calculate turnover rates
  • getOffboardings - List offboarded employees


Department Management

getAllDepartments

Fetches all departments from Simployer API with optional filtering.


Parameters:

Parameter

Type

Required

Default

Description

limit
number
No
500
Maximum number of results to return
filters
object
No
-
Filter criteria (see below)

Available Filters:

Filter

Type

Description

name
string
Filter by department name
companyId
string
Filter by company ID

Example Request:

{  "jsonrpc": "2.0",  "id": "4",  "method": "tools/call",  "params": {    "name": "getAllDepartments",    "arguments": {      "limit": 50,      "filters": {        "companyId": "67890"      }    }  } } 


getDepartmentById

Fetches a specific department by its unique ID.

Parameters:

Parameter

Type

Required

Default

Description

departmentId
string
Yes
-
The unique identifier of the department


updateDepartment

Updates department information.


Leave Management

getAllLeaves

Fetches all leaves from Simployer API with optional filtering.

Parameters:

Parameter

Type

Required

Default

Description

limit
number
No
500
Maximum number of results to return
filters
object
No
-
Filter criteria (see below)

Available Filters:

Filter

Type

Description

employeeId
string
Filter by employee ID
typeId
string
Filter by leave type ID
startDate
string
Filter leaves where either startDate or endDate is >= this date (filtered locally)
endDate
string
Filter leaves where either startDate or endDate is <= this date (filtered locally)

Note on Date Filtering:

The startDate and endDate filters are applied locally after fetching leaves from the API. When both filters are provided, leaves are returned where either the leave's startDate or endDate falls within the specified range.

Example Request:

{  "jsonrpc": "2.0",  "id": "5",  "method": "tools/call",  "params": {    "name": "getAllLeaves",    "arguments": {      "limit": 200,      "filters": {        "employeeId": "12345",        "startDate": "2024-07-01",        "endDate": "2024-07-31"      }    }  } } 


getLeaveById

Fetches a specific leave by its unique ID.

Parameters:

Parameter

Type

Required

Default

Description

leaveId
string
Yes
-
The unique identifier of the leave


updateLeave

Updates leave status or details.



Compensation Management

Regular Compensation

Tools Available:

  • getAllCompensations - List/search compensation records
  • getCompensationById - Get compensation details
  • updateCompensation - Update compensation information

Available Filters for getAllCompensations:

Filter

Type

Description

userId
string
Filter by user ID
employeeId
string
Filter by employee ID
effectiveDate
any
Filter by effective date
amount
number
Filter by amount
baseAmount
number
Filter by base amount
currency
string
Filter by currency
payoutDay
number
Filter by payout day
payoutPeriod
string
Filter by payout period
payoutFrequency
string
Filter by payout frequency
salarySchedule
string
Filter by salary schedule
paidOvertime
boolean
Filter by paid overtime
salaryYear
number
Filter by salary year
salaryCode
string
Filter by salary code

Bonus Compensation

Tools Available:

  • getAllBonusCompensations - List/search bonus records
  • getBonusCompensationById - Get bonus details
  • updateBonusCompensation - Update bonus information

Additional Compensation

Tools Available:

  • getAllAdditionalCompensations - List/search additional compensation
  • getAdditionalCompensationById - Get additional compensation details
  • updateAdditionalCompensation - Update additional compensation

Office Management

Tools Available:

  • getAllOffices - List/search offices with filtering
  • getOfficeById - Get office details
  • updateOffice - Update office information

Project Management

Tools Available:

  • getAllProjects - List/search projects
  • getProjectById - Get project details
  • updateProject - Update project information

Available Filters for getAllProjects:

Filter

Type

Description

name
string
Filter by project name
archived
boolean
Filter by archived status
companyId
string
Filter by company ID

Company Management

Tools Available:

  • getCompanyById - Get company information (read-only)


Team Management

Tools Available:

  • getAllTeams - List/search teams
  • getTeamById - Get team details
  • updateTeam - Update team information


Employee Team References

Tools Available:

  • getAllEmployeeTeamReferences - List employee-team associations
  • getEmployeeTeamReferenceById - Get specific association
  • updateEmployeeTeamReference - Update team membership


Employment Management

Tools Available:

  • getAllEmployments - List/search employment records
  • getEmploymentById - Get employment details
  • updateEmployment - Update employment information


Employment Type Management

Tools Available:

  • getAllEmploymentTypes - List/search employment types
  • getEmploymentTypeById - Get employment type details
  • updateEmploymentType - Update employment type


Cost Center Management

Tools Available:

  • getAllCostCenters - List/search cost centers
  • getCostCenterById - Get cost center details
  • updateCostCenter - Update cost center information


Leave Transaction Management

Tools Available:

  • getAllLeaveTransactions - List/search leave transactions
  • getLeaveTransactionById - Get transaction details (read-only)


Child Management

Tools Available:

  • getAllChildren - List/search children records
  • getChildById - Get child details
  • updateChild - Update child information


Timesheet Management

Timesheets:

  • getAllTimesheets - List/search timesheets
  • getTimesheetById - Get timesheet details (read-only)

Timesheet Entries:

  • getAllTimesheetEntries - List/search timesheet entries
  • getTimesheetEntryById - Get entry details
  • updateTimesheetEntry - Update timesheet entry

Timesheet Entry Types:

  • getAllTimesheetEntryTypes - List/search entry types
  • getTimesheetEntryTypeById - Get entry type details (read-only)


Work Week Management

Tools Available:

  • getAllWorkWeeks - List/search work week configurations
  • getWorkWeekById - Get work week details
  • updateWorkWeek - Update work week configuration


Scope Management

Tools Available:

  • getAllScopes - List/search scopes
  • getScopeById - Get scope details
  • getScopesByParentId - Get scopes by parent ID
  • getScopesByParentType - Get scopes by parent type
  • getScopeEmployeeCount - Get employee count for scope(s)
  • scopeEmployeeSearchByName - Check if employee is in scope
  • updateScope - Update scope configuration

Parent Types Available:

ANNOUNCEMENT, COMPETENCE, FEATURE_ACCESS_POLICY, FORTNOX_SETTINGS, FRANKLY_SETTINGS, LEAVE_POLICY, MODULE_ACCESS, PROFILE_TEMPLATE, PROJECT, REVIEW_CYCLE, SIMP_INTEGRATION_SETTINGS, TIMESHEET_POLICY, WORKFLOW_TASK, WORKFLOW_TASK_TEMPLATE, WORKFLOW_TEMPLATE_ADDITIONAL_PROPERTIES, EXTENDED_MODULE_ACCESS


Use Cases & Examples


Employee Analytics

Scenario: "Show me the turnover rate for the last 12 months"

Natural Language Query: "What's our employee turnover rate for the last 12 months?"

Tools Used: calculateTurnover

Example Request:

{  "jsonrpc": "2.0",  "id": "6",  "method": "tools/call",  "params": {    "name": "calculateTurnover",    "arguments": {      "startDate": "2023-01-01",      "endDate": "2024-01-01"    }  } } 


Leave Management

Scenario: "Show all approved leaves for July 2024 in the Gdańsk office"

Natural Language Query: "Show me all approved leaves for July 2024 in the Gdańsk office"

Tools Used: 1. getAllOffices (to find office ID) 2. getAllEmployees (to find employees in that office) 3. getAllLeaves (to get leaves with filters)

Step-by-Step:

  1. First, get the office ID for Gdańsk using getAllOffices with filter city: "Gdańsk"
  2. Get all employees in that office using getAllEmployees with filter officeId: <office-id>
  3. Get all leaves for those employees in July 2024 using getAllLeaves with filters startDate: "2024-07-01", endDate: "2024-07-31"


Employee Search

Scenario: "Find all active employees in the Engineering department"

Natural Language Query: "Find all active employees in the Engineering department"

Tools Used: getAllEmployees

Example Request:

{  "jsonrpc": "2.0",  "id": "7",  "method": "tools/call",  "params": {    "name": "getAllEmployees",    "arguments": {      "filters": {        "active": true,        "departmentId": "dept-123"      },      "limit": 100    }  } } 


Error Handling

Error Response Format

All errors follow the JSON-RPC 2.0 format:

{  "jsonrpc": "2.0",  "id": "1",  "error": {    "code": -32603,    "message": "Internal server error",    "data": {      "details": "Additional error information"    }  } } 

Common Error Codes

Code

Meaning

Solution

-32600
Invalid Request
Check your JSON-RPC format
-32601
Method Not Found
Verify the tool name is correct
-32602
Invalid Params
Check parameter types and required fields
-32603
Internal Error
Contact support with error details
401
Unauthorized
Verify your JWT token is valid
404
Not Found
Check that the resource ID exists
400
Bad Request
Validate your request parameters


Troubleshooting

Authentication Errors

  • Verify your JWT token is valid and not expired
  • Check token format: Bearer YOUR_TOKEN
  • Ensure token has necessary permissions

Connection Issues

  • Verify server is accessible: curl https://mcp-alexis.simployer.com/health
  • Check network connectivity
  • Review error messages in response

Timeout Errors

  • Default timeout: 120 seconds
  • For large queries, use pagination (limit parameter)
  • Consider breaking complex operations into smaller requests


Best Practices


Performance Optimization

Use Pagination

  • Default limit: 500 records per request
  • Always paginate when totalCount > limit
  • Use filters to reduce result sets when possible

Filter Before Fetching

  • Apply filters at the API level rather than filtering client-side
  • Use specific filters (IDs, dates) when possible
  • Combine multiple filters to narrow results

Request Optimization

  • Batch related queries when possible
  • Cache frequently accessed data
  • Use getById methods when you know the ID


Security

  • Never commit tokens to version control
  • Use environment variables for sensitive data
  • Rotate tokens regularly
  • Implement proper error handling to avoid exposing sensitive information
  • Use HTTPS for all requests


Rate Limiting

  • Be mindful of API rate limits
  • Implement exponential backoff for retries
  • Consider implementing client-side request queuing for high-volume applications


FAQ

General

Q: What is MCP? A: Model Context Protocol (MCP) is an open protocol that enables AI assistants to securely access external data sources and tools.

Q: Do I need to be a developer to use these tools? A: While some technical knowledge helps, many AI platforms (like Claude Desktop) provide a user-friendly interface for using MCP tools.

Q: Is my data secure? A: Yes. All requests use JWT authentication and HTTPS encryption. Your tokens are never stored on our servers.


Integration

Q: Can I use these tools with ChatGPT? A: Yes, if your ChatGPT implementation supports MCP. Check with your AI platform provider for MCP compatibility.

Q: How do I test if my setup is working? A: Try a simple query like "List all employees" or "Show me all departments" through your MCP client.

Q: What if I get authentication errors? A: Verify your JWT token is valid, not expired, and properly formatted in the Authorization header.


Support & Resources

Health Check

Check server status: GET https://mcp-alexis.simployer.com/health

Response: {"status": "ok"}


Additional Resources

  • Simployer Public API Documentation 
  • MCP Protocol Specification
  • Related documentation: Public API MCP docs

 

Was this article helpful?

That’s Great!

Thank you for your feedback

Sorry! We couldn't be helpful

Thank you for your feedback

Let us know how can we improve this article!

Select at least one of the reasons
CAPTCHA verification is required.

Feedback sent

We appreciate your effort and will try to fix the article