Connect
Optimize
Secure
The #1 agentic semantic tool search: 91.6% first-try accuracy on S1 Search Bench • Explore Tool Discovery →
Connect your AI agent to StackOne's PeopleHR MCP server and give it 58 MCP tools out of the box. Auth, tool execution, and security all managed.
Coverage
Create, read, update, and delete across PeopleHR — and extend your agent's capabilities with custom actions.
Authentication
Per-user OAuth in one call. Your PeopleHR MCP server gets session-scoped tokens with zero credentials stored on your infra.
Agent Auth →Security
Every PeopleHR tool response scanned for prompt injection in milliseconds — 88.7% accuracy, all running on CPU.
Prompt Injection Defense →Performance
Free up to 96% of your agent's context window to enhance reasoning and reduce cost, on every PeopleHR call.
Tools Discovery →A PeopleHR MCP server lets AI agents read and write PeopleHR data through the Model Context Protocol — Anthropic's open standard for connecting LLMs to external tools. StackOne's PeopleHR MCP server ships with 58 pre-built actions, fully extensible via the Connector Builder — plus managed authentication, prompt injection defense, observability, and agent execution runtime. Connect it from MCP clients like Claude Desktop, Claude Code, Cursor, Goose, and VS Code, or from agent frameworks like OpenAI Agents SDK, LangChain, and Vercel AI SDK.
Every action from PeopleHR's API, ready for your agent. Create, read, update, and delete — scoped to exactly what you need.
Create a new employee record
Retrieve a list of all employees
Retrieve details for a specific employee by ID. Use list_employees first to find the EmployeeId.
Update an existing employee's details. Requires EmployeeId, ReasonForChange, and all core fields (name, gender, dates, job role, location, department with effective dates). Use get_employee first to retrieve current values.
Add a new unplanned absence record (sick leave, personal leave) for an employee. DurationType codes: 1=Days, 2=Hours, 3=Half Day. Use list_employees to find the EmployeeId first.
Retrieve unplanned absence records (sick leave, personal leave) for an employee within a date range. Use list_employees to find the EmployeeId first.
Update an existing absence record. Requires OldStartDate and OldEndDate from the original record — use get_absences first to retrieve these.
Delete an absence record for an employee. Identified by StartDate and EndDate — use get_absences first to find the dates.
Book a new planned annual leave / vacation for an employee. DurationType codes: 1=Days, 2=Hours, 3=Half Day. Use list_employees to find the EmployeeId first.
Retrieve planned annual leave / vacation booking records for an employee, optionally filtered by date range. Use list_employees to find the EmployeeId first.
Update an existing planned leave booking for an employee. Requires OldStartDate and OldEndDate from the original booking — use get_holidays first to retrieve these.
Delete a holiday booking for an employee. Identified by StartDate and EndDate of the booking — use get_holidays first to find the dates.
Create a new salary record for an employee. Use list_employees to find the EmployeeId first. Deductions and Entitlements can be empty arrays [] if not applicable.
Retrieve salary details for an employee, with optional history. Use list_employees to find the EmployeeId first.
Delete a salary record for an employee. Identified by EffectiveFrom date — use get_salary first to find it.
Upload a document to an employee's record. Requires base64-encoded file content in the File field and a Category (e.g. "General", "Contract").
Retrieve all documents for an employee. Use list_employees to find the EmployeeId first.
Retrieve a specific employee document by DocumentId. Use list_documents first to find the DocumentId.
Create a new timesheet entry for an employee
Retrieve timesheet records for an employee. Use list_employees to find the EmployeeId first.
Update an existing timesheet entry for an employee
Delete a timesheet entry for an employee. Identified by TimesheetDate — use get_timesheets first to find the date.
Create a new appraisal record for an employee
Retrieve a specific appraisal record by AppraisalId. Use get_appraisals_by_employee first to find the AppraisalId.
Update an existing appraisal record
Delete an appraisal record. Requires AppraisalId — use get_appraisals_by_employee first to find it.
Add a new benefit record for an employee
Retrieve a specific benefit record by its BenefitId. Use get_benefits_by_employee first to find the BenefitId.
Update an existing benefit record for an employee
Delete a benefit record for an employee. Requires BenefitId — use get_benefits_by_employee first to find it.
Add a new qualification record for an employee
Retrieve a specific qualification record by QualificationId. Use get_qualifications_by_employee first to find the QualificationId.
Update an existing qualification record for an employee
Delete a qualification record for an employee. Requires QualificationId — use get_qualifications_by_employee first to find it.
Add a new training record for an employee
Retrieve all training records for a specific employee. Use list_employees to find the EmployeeId first.
Update an existing training record for an employee
Delete a training record for an employee. Requires TrainingId — use get_trainings first to find it.
Retrieve current year holiday entitlement (remaining allowance) for a specific employee. Use list_employees to find the EmployeeId first.
Update the current year holiday entitlement for a specific employee. Requires EntitlementThisYear value and ReasonForChange.
Retrieve next year's holiday entitlement (future year allowance) for a specific employee. For current year, use get_holiday_entitlement instead.
Update next year's holiday entitlement for a specific employee. For current year, use update_holiday_entitlement instead.
Add a new maternity/paternity record for an employee
Retrieve a specific maternity/paternity record by MaternityPaternityTxnId. Use get_maternity_paternity_by_employee first to find the ID.
Update an existing maternity/paternity record for an employee
Delete a maternity/paternity record. Requires MaternityPaternityTxnId — use get_maternity_paternity_by_employee first to find it.
Add a new right to work / visa / work permit record for an employee. DocumentId here means the document reference number (e.g. passport number), not a database ID.
Retrieve right to work / visa / work permit details for a specific employee. Use list_employees to find the EmployeeId first.
Update an existing right to work record for an employee
Delete a right to work record. Requires RightToWorkTxnId — use get_right_to_work first to find it.
Upload a profile image for an employee. Requires EmployeeId, image filename (e.g. photo.png), and base64-encoded image data.
Retrieve all appraisal / performance review records for an employee. Use list_employees to find the EmployeeId first.
Retrieve all benefit records for a specific employee. Use list_employees to find the EmployeeId first.
Retrieve all qualification records for a specific employee. Use list_employees to find the EmployeeId first.
Retrieve details of a specific work pattern by WorkPatternId. The WorkPatternId can be found in the employee detail response from get_employee.
Retrieve all maternity/paternity leave records for a specific employee. Use list_employees to find the EmployeeId first.
Change an employee's ID to a new value
Mark an employee as a leaver with a leaving date and reason. Use list_employees to find the EmployeeId first.
Connect your AI agent to PeopleHR and help your team scale the HR operations they run by hand today.
Use StackOne to connect your AI agent to your HRIS, identity management, and LMS to automate employee onboarding.
ViewUse StackOne to connect your AI agent to your HRIS, knowledge base, and messaging tools to automate HR policy Q&A.
ViewUse StackOne to connect your AI agent to your HRIS, identity management, and ITSM to automate employee offboarding and deprovisioning.
ViewOne endpoint. Any framework. Your agent is talking to PeopleHR in under 10 lines of code.
Agent Frameworks
{
"mcpServers": {
"stackone": {
"command": "npx",
"args": [
"-y",
"mcp-remote@latest",
"https://api.stackone.com/mcp?x-account-id=<account_id>",
"--header",
"Authorization: Basic <YOUR_BASE64_TOKEN>"
]
}
}
}139+ actions
128+ actions
127+ actions
123+ actions
120+ actions
117+ actions
111+ actions
Anthropic's code_execution processes data already in context. Custom MCP code mode keeps raw tool responses in a sandbox. 14K tokens vs 500.
11 min
Benchmarking BM25, TF-IDF, and hybrid search for MCP tool discovery across 916 tools. The 80/20 TF-IDF/BM25 hybrid hits 21% Top-1 accuracy in under 1ms.
10 min
MCP tools that read emails, CRM records, and tickets are indirect prompt injection vectors. Here's how we built a two-tier defense that scans tool results in ~11ms.
12 min
MCP vs A2A: what each protocol standardizes, how they differ, their shared security risks including indirect prompt injection, and when to use one, both, or a hybrid architecture.
12 min
MCP wraps APIs, it doesn't replace them. After building 200+ connectors that serve both, here's when each approach wins.
14 min read
origin_owner_id.All the tools you need to build and scale AI agent integrations, with best-in-class connectivity, execution, and security.