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 Oyster HR MCP server and give it 104 MCP tools out of the box. Auth, tool execution, and security all managed.
Coverage
Create, read, update, and delete across Oyster HR — and extend your agent's capabilities with custom actions.
Authentication
Per-user OAuth in one call. Your Oyster HR MCP server gets session-scoped tokens with zero credentials stored on your infra.
Agent Auth →Security
Every Oyster HR 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 Oyster HR call.
Tools Discovery →A Oyster HR MCP server lets AI agents read and write Oyster HR data through the Model Context Protocol — Anthropic's open standard for connecting LLMs to external tools. StackOne's Oyster HR MCP server ships with 104 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 Oyster HR's API, ready for your agent. Create, read, update, and delete — scoped to exactly what you need.
Retrieve all webhook endpoints registered for the authenticated organization
Delete a webhook endpoint by ID
Retrieve a paginated list of engagements (employees and contractors)
Retrieve details of a specific engagement by ID
Create a new contract change request for an engagement
Retrieve all contract change requests across engagements
Retrieve details for a specific contract change request
Retrieve a paginated list of time off entitlements
Retrieve entitlements for an individual engagement
Create a new time off request for an engagement
Retrieve a paginated list of time off requests
Retrieve an individual time off request by ID
Create a new expense record
Retrieve all expenses
Retrieve an individual expense by ID
Delete an expense record by ID
Create a payroll change for an engagement
Retrieve all payroll changes
Retrieve a single payroll change by ID
Update an existing payroll change
Retrieve bank accounts for the company
Retrieve bank account details by ID
Create a new time sheet for an engagement
Retrieve all time sheets for the company
Retrieve an individual time sheet by ID
Delete a time sheet
Create a new entry in a time sheet
Update an existing time sheet entry
Delete a time sheet entry
Create a new hiring employment record
Retrieve an individual hiring employment by ID
Update a draft hiring employment record
Delete a draft hiring employment record
Retrieve company details for the authenticated organization
Retrieve all webhook dispatches for the authenticated Developer application
Retrieve a paginated list of departments
Retrieve a paginated list of allowances for a specific engagement
Retrieve a paginated list of bonuses for a specific engagement
Retrieve a paginated list of documents for a specific engagement
Retrieve a paginated list of payslips for a specific engagement
Retrieve a paginated list of payroll entries
Retrieve a single payroll entry by ID
Retrieve payroll records for an individual payroll
Retrieve default payroll changes rulesets for source types
Retrieve default payroll changes ruleset
Retrieve payroll changes rulesets for source types
Retrieve payroll changes ruleset
Retrieve hiring process tasks for an employment
Update personal details for an employment
Cancel a contract change request
Approve a pending time off request
Reject a pending time off request
Approve a pending expense
Decline a pending expense
Cancel a payroll change
Submit a time sheet for approval
Confirm a time sheet
Submit a hiring employment for processing
Send invitation to a team member for a hiring employment
Emitted when a team member accepts their employment or contractor agreement. Maps to OysterHR event `hiring.agreement_accepted`.
Emitted when a new employment or contractor agreement draft is created for review. Maps to OysterHR event `hiring.agreement_drafted`.
Emitted when an employment or contractor agreement is fully signed by all parties. Maps to OysterHR event `hiring.agreement_signed`.
Emitted when an existing employment or contractor agreement is modified with new terms or details. Maps to OysterHR event `hiring.agreement_updated`.
Emitted when an employment or contractor agreement passes verification checks. Maps to OysterHR event `hiring.agreement_verified`.
Emitted when a contractor engagement becomes active and the contractor is ready to begin work. Maps to OysterHR event `hiring.contractor_engaged`.
Emitted when a new contractor hiring request is submitted for processing. Maps to OysterHR event `hiring.contractor_submitted`.
Emitted when an employee engagement becomes active and the employee officially starts their role. Maps to OysterHR event `hiring.employment_engaged`.
Emitted when a new employee completes all onboarding steps and requirements. Maps to OysterHR event `hiring.employment_onboarding_completed`.
Emitted when a new employee hiring request is submitted for processing. Maps to OysterHR event `hiring.employment_submitted`.
Emitted when a team member accepts their invitation to join the Oyster platform. Maps to OysterHR event `hiring.oyster_invitation_accepted`.
Emitted when a payroll team member engagement becomes active and payroll processing begins. Maps to OysterHR event `hiring.payroll_team_member_engaged`.
Emitted when a new payroll team member hiring request is submitted for processing. Maps to OysterHR event `hiring.payroll_team_member_submitted`.
Emitted when a hiring-related task is updated, such as a background check or document submission status change. Maps to OysterHR event `hiring.task_updated`.
Emitted when an offboarding request is approved and the termination process can proceed. Maps to OysterHR event `offboarding.approved`.
Emitted when a previously initiated offboarding process is cancelled and the engagement continues. Maps to OysterHR event `offboarding.cancelled`.
Emitted when an engagement is fully terminated and the team member is offboarded from the company. Maps to OysterHR event `offboarding.engagement_terminated`.
Emitted when an offboarding process is started for a team member, beginning the termination workflow. Maps to OysterHR event `offboarding.initiated`.
Emitted when a team member submits a new time off request for approval. Maps to OysterHR event `time_off.request_created`.
Emitted when an existing time off request is modified, such as date or duration changes. Maps to OysterHR event `time_off.request_modified`.
Emitted when a time off request status changes, such as being approved, declined, or cancelled. Maps to OysterHR event `time_off.request_status_changed`.
Emitted when a submitted time sheet is approved by a manager or administrator. Maps to OysterHR event `time_tracking.time_sheet_approved`.
Emitted when a new time sheet is created for a team member's work period. Maps to OysterHR event `time_tracking.time_sheet_created`.
Emitted when a time sheet is deleted from the system. Maps to OysterHR event `time_tracking.time_sheet_deleted`.
Emitted when individual time entries within a time sheet are added, updated, or removed. Maps to OysterHR event `time_tracking.time_sheet_entries_modified`.
Emitted when a time sheet is submitted and awaiting manager or administrator approval. Maps to OysterHR event `time_tracking.time_sheet_pending_approval`.
Emitted when a team member submits their completed time sheet for the work period. Maps to OysterHR event `time_tracking.time_sheet_submitted`.
Emitted when a new document is uploaded to a team member's engagement record. Maps to OysterHR event `engagements.document_uploaded`.
Emitted when an existing document on a team member's engagement record is modified. Maps to OysterHR event `engagements.document_updated`.
Emitted when a document is removed from a team member's engagement record. Maps to OysterHR event `engagements.document_deleted`.
Emitted when a new payslip is uploaded and made available for a team member. Maps to OysterHR event `engagements.payslip_uploaded`.
Emitted when an existing payslip record is modified or corrected. Maps to OysterHR event `engagements.payslip_updated`.
Emitted when a payslip record is removed from a team member's engagement. Maps to OysterHR event `engagements.payslip_deleted`.
Emitted when a submitted expense claim is approved for reimbursement. Maps to OysterHR event `expenses.expense_approved`.
Emitted when a team member submits a new expense claim for approval. Maps to OysterHR event `expenses.expense_created`.
Emitted when a submitted expense claim is declined and will not be reimbursed. Maps to OysterHR event `expenses.expense_declined`.
Emitted when an approved contract change takes effect on the engagement terms. Maps to OysterHR event `contract.change_applied`.
Emitted when a requested contract change is approved and ready to be applied. Maps to OysterHR event `contract.change_approved`.
Emitted when a pending contract change request is cancelled before being applied. Maps to OysterHR event `contract.change_cancelled`.
Emitted when a change to an existing contract is requested, such as salary adjustment or role change. Maps to OysterHR event `contract.change_requested`.
Emitted when a contract change request is formally submitted for review and approval. Maps to OysterHR event `contract.change_submitted`.
Emitted when the details of a pending contract change request are modified before approval. Maps to OysterHR event `contract.change_updated`.
Emitted when a payment charge is successfully processed and funds are transferred. Maps to OysterHR event `payments.charge_paid`.
Emitted when a payment charge fails to process due to insufficient funds or other payment issues. Maps to OysterHR event `payments.charge_failed`.
Emitted when a group of payment charges is successfully processed as a batch. Maps to OysterHR event `payments.charge_group_paid`.
Connect your AI agent to Oyster HR 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 ATS and job boards to automate job posting distribution.
ViewOne endpoint. Any framework. Your agent is talking to Oyster HR 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.