Builders
Builders · MCP

The Winslow MCP.

One server. Every Winslow capability. Connect Claude, ChatGPT, Cursor, Lovable, or any MCP-capable agent to the same API your admin UI uses — full read/write, gated by role, audited on every action.

What is the Winslow MCP?

One protocol, every Winslow capability.

The Winslow MCP server is a Model Context Protocol endpoint that exposes 50+ first-class tools covering employees, payroll, benefits, documents, time off, approvals, custom properties, and your agent runtime. It uses the same authorization layer as the admin UI — agents inherit the role of the API key, not a separate "service" permission.

  • Full read/write — not a read-only wrapper around a public API
  • Workspace-scoped — API keys resolve workspace automatically
  • Per-field role gating — agents see and write what the key's role allows
  • Audit log — every agent action is a first-class event, exportable to your SIEM
  • Webhooks + events — agents can subscribe to hires, terminations, writes, comp changes
Supported tools

50+ tools, organized by domain.

Every tool listed below is callable through the MCP endpoint with the auth model described above. Parameter shorthand uses ? for optional, with the most common required params shown first.

Workspace & Identity

Resolve the workspace and user tied to the current API key.

Tool
Description
Parameters
get_workspace
Get the workspace associated with the calling API key (id, name).
get_me
Get the user tied to the API key and any linked employee record.

Employees

Read employee records. All system and custom properties are flattened into the result.

Tool
Description
Parameters
get_employee
Look up one employee by record id. Returns system + custom properties.
employeeRecordId
list_employees
List employees. Defaults to W-2 / full-time; pass `employeeTypes` to widen.
workspaceId?, includeInactive?, employeeTypes?

Organization

Departments and reporting structure.

Tool
Description
Parameters
list_departments
List departments derived from the system-department dropdown.
workspaceId?
list_org_chart
Get the active org hierarchy as a tree.
workspaceId?

Employee Documents

Upload, fetch, and validate documents tied to an employee record.

Tool
Description
Parameters
list_employee_documents
List documents for one employee. Optionally filter by type.
employeeRecordId, type?
get_employee_document
Look up document metadata. Returns a `publicLink` (cloud URL).
employeeRecordId, employeeDocumentId
find_employee_documents
Ranked search across an employee's documents by name or agentData.
employeeRecordId, searchQuery, type?, limit?
upload_employee_document
Upload base64 file (≤100 MB). Creates the document and cloud storage entry.
employeeRecordId, fileName, fileBase64, type?
get_employee_document_resource
Return document bytes as an MCP embedded resource (≤50 MB).
employeeRecordId, employeeDocumentId
get_employee_document_content
Extract text (PDF/DOCX/MD/TXT) or render PDF pages as PNG (≤10 pages).
employeeRecordId, employeeDocumentId, format
set_employee_document_validation
Set agent-side validation flag and/or agentData on a document.
employeeRecordId, employeeDocumentId, validation?, agentData?

Benefits

Read employee benefit elections and underlying plan documents.

Tool
Description
Parameters
get_employee_benefits
Medical, dental, vision summary for the current coverage timeline.
employeeRecordId
get_employee_benefit_spd
Download SPD PDFs from enrolled plans. Returns base64 resources.
employeeRecordId, planTypes?

Payroll

Read payroll runs and their line items.

Tool
Description
Parameters
get_payroll
Fetch one payroll run with full line items and contractor payments.
payrollId
list_payrolls
List payroll runs. Filter by payday date range.
workspaceId?, paydayAfter?, paydayBefore?, limit?

Payroll Adjustments

Templates (recurring rules for who gets paid what) and instances (concrete adjustments on a run).

Tool
Description
Parameters
list_payroll_adjustment_templates
List recurring adjustment templates.
workspaceId?
get_payroll_adjustment_template
Get one template by id.
templateId
create_payroll_adjustment_template
Create a template with targeting + amount rules (one-time, monthly, half-month).
name, targetType, recurrenceType, amountType, …
update_payroll_adjustment_template
Partial update of a template.
templateId, …
delete_payroll_adjustment_template
Delete a template by id.
templateId
list_payroll_adjustments
List adjustment instances. Filter by payroll or employee.
workspaceId?, checkPayrollId?, employeeRecordId?
get_payroll_adjustment
Get one adjustment instance by id.
adjustmentId
create_payroll_adjustment
Create a one-off adjustment, optionally linked to a template or payroll.
employeeRecordId, name, amount, checkPayrollItemType, …
update_payroll_adjustment
Update an instance. Syncs the change back to the payroll engine.
adjustmentId, …
delete_payroll_adjustment
Delete an instance and remove linked engine earnings.
adjustmentId

Contractor Invoices

Submit and review contractor invoices. Approve/reject is role-gated.

Tool
Description
Parameters
create_invoice
Submit a contractor invoice (PDF URL + metadata).
employeeRecordId, employeeInvoiceNumber, submissionDate, dueDate, amount, cloudURL, note?
approve_invoice
Approve a submitted invoice.
invoiceId
reject_invoice
Reject an invoice. Not allowed once linked to a payroll.
invoiceId
unapprove_invoice
Move an approved invoice back to SUBMITTED.
invoiceId
cancel_invoice
Hard-delete an invoice. Not allowed once linked to a payroll.
invoiceId

Approvals

Generic approval task system. Used by invoices, time off, comp changes, and custom workflows.

Tool
Description
Parameters
get_approval_state
Get the status of an approval task.
approvalId
update_approval
Update name, description, or status (ACCEPTED / REJECTED / CANCELLED).
approvalId, name?, description?, status?
cancel_approval
Cancel a non-terminal approval task.
approvalId

Time Off & Holidays

Read pending and approved time-off requests, and the company holiday calendar.

Tool
Description
Parameters
list_time_off
List PENDING and APPROVED requests. Defaults to current month.
workspaceId?, startDate?, endDate?
approve_request
Approve or reject a time-off request.
timeOffRequestId, status
list_company_holidays
Resolve company holidays for a year, including floating dates.
workspaceId?, year?

Terminations

Read termination records for the workspace.

Tool
Description
Parameters
list_terminations
List all termination records for the workspace.
workspaceId?

Custom Properties

Workspace-level and app-namespaced custom fields on employee records.

Tool
Description
Parameters
list_custom_properties
List the workspace's custom properties (excludes app-namespaced).
workspaceId?
list_app_properties
List custom properties created by one app (prefixed with appId).
appId
create_app_property
Create an app-namespaced custom property. Label is auto-prefixed with `appId-`.
appId, label, display, type, required?, settings?, group?

Artifacts

Attach app-scoped data to an employee record. CARD, TEXT, MARKDOWN, JSON, URL, IMAGE, or FILE.

Tool
Description
Parameters
list_artifacts
List artifacts on one employee, optionally filtered by appId.
employeeRecordId, appId?
get_artifact
Retrieve one artifact by id.
artifactId
create_artifact
Create an artifact on an employee record. Auto-registers the app on first use.
employeeRecordId, appId, type, …
update_artifact
Merge-update an artifact. Omitted fields are preserved.
artifactId, …
delete_artifact
Remove an artifact from an employee record.
artifactId
list_artifact_apps
List all apps storing data on employees in the workspace.
register_artifact_app
Explicitly register an app namespace. Usually not needed.
appId, name, description, faviconUrl?

Winslow Events

Long-running agents poll lifecycle events (hires, terminations, comp changes, writes) and record their work back on the row.

Tool
Description
Parameters
poll_winslow_events
Poll events after a millisecond cursor. Ascending by `firedAt, id`. Up to 1,000 per call.
sinceMs, workspaceId?, agentStatusFilter?
set_winslow_event_agent_fields
Set `agentStatus` and/or `agentData` on an event row. No new events emitted.
winslowEventId, agentStatus?, agentData?

AI & Knowledge Base

Ask questions against your workspace policies or your employee data, in natural language.

Tool
Description
Parameters
ask_policy_question
Ask a question against the workspace knowledge base (uploaded HR policies, handbooks). Context-aware to the asker.
question
ask_reporting_question
Ask a natural-language reporting question. Returns structured tabular data.
question

OAuth App Management

Register and manage OAuth apps for end-user-facing integrations that act on behalf of a Winslow user.

Tool
Description
Parameters
register_oauth_app
Register an OAuth app. Returns credentials, code snippets, .env content, and the auth URL.
name, redirectUris, scopes, description?, framework?
list_oauth_apps
List OAuth apps registered in the workspace.
delete_oauth_app
Deactivate an OAuth app. Existing tokens work until expiry; no new tokens are issued.
clientId

Feedback

Report bugs or suggest improvements directly from your agent.

Tool
Description
Parameters
report_bug
Open a bug report on the MCP API.
title, description?, toolName?, agentContext?
suggest_improvement
Suggest an improvement to the MCP API.
title, description?, toolName?, agentContext?

API Documentation

Tool
Description
Parameters
get_api_docs
Get Winslow API documentation (OAuth, REST, MCP, auth, quickstart) inline.
section?
Sample prompts

What it looks like in practice.

Real prompts you can drop into Claude or ChatGPT once your MCP is connected. The right-hand side shows the tools the model picks up to answer.

"Who's on PTO next week and is anyone managing more than 8 direct reports?"
list_time_off + list_org_chart + list_employees
"Pay everyone in the Boston office a $500 spot bonus on the next payroll."
list_employees (filter by office) → create_payroll_adjustment (per employee)
"Find Cooper's signed offer letter and check it's been countersigned."
find_employee_documents + get_employee_document_content + set_employee_document_validation
"Build me a dashboard of comp by department for engineering."
ask_reporting_question (natural-language) or list_employees + list_departments
"What does our parental leave policy say for someone in NY on the PPO plan?"
ask_policy_question (context-aware: pulls plan + state from the asker's record)

Build something in an afternoon.

Point your favorite agent at the MCP and build the People-team tool you've been waiting on procurement for. We'll show you how if you want help — or get out of your way if you don't.