Mcp

Tools Reference

Complete reference for all BookYourPTO MCP tools — parameters, descriptions, required roles, and usage examples.

BookYourPTO MCP exposes 32 tools organized into 9 categories. Each tool is described below with its parameters and required permissions.

Authentication

Authentication is handled automatically via OAuth 2.0. When you first connect, your browser will open a BookYourPTO login page. After you sign in, your AI client receives a secure token — no credentials are ever shared with the AI.

There is no login tool. Authentication happens in your browser before the AI session starts. Two-factor authentication (2FA) is fully supported.

Leaves

create_leave_request

Submit a new leave request. Use get_leave_balance first to check availability.

ParameterTypeRequiredDescription
userIdstringYesUser ID for whom to create the leave
leaveTypeIdstringYesLeave type ID (use bypto://leave-types resource to look up)
startDatestringYesStart date (YYYY-MM-DD)
endDatestringYesEnd date (YYYY-MM-DD)
startHalfenumNoFirst day duration: FULL_DAY, FIRST_HALF, or SECOND_HALF. Default: FULL_DAY
endHalfenumNoLast day duration: FULL_DAY, FIRST_HALF, or SECOND_HALF. Default: FULL_DAY
reasonstringNoReason for leave

query_leaves

List leave requests. Filters by user, year, and status. Employees see their own; managers/admins see others.

ParameterTypeRequiredDescription
userIdstringNoUser ID to query (defaults to authenticated user)
yearnumberNoYear to query (defaults to current year)
statusstringNoFilter by status: PENDING, APPROVED, REJECTED, CANCELLED

get_leave_balance

Get leave balance breakdown (annual, sick, carried over) for a user and year.

ParameterTypeRequiredDescription
userIdstringNoUser ID (defaults to authenticated user)
yearnumberNoFiscal year (defaults to current year)

get_pending_leave_approvals

List pending leave requests awaiting approval.

Required role: DEPARTMENT_HEAD, ADMINISTRATOR, or EXECUTIVE

No parameters.

approve_or_reject_leave

Approve or reject a pending leave request.

Required role: DEPARTMENT_HEAD, ADMINISTRATOR, or EXECUTIVE

ParameterTypeRequiredDescription
leaveIdstringYesID of the leave request
actionenumYesapprove or reject
reasonstringNoRejection reason (required if rejecting)

Time Tracking

get_time_tracking_status

Get current clock status (clocked in / out / on break) and today's summary for a user.

ParameterTypeRequiredDescription
userIdstringNoUser ID (defaults to authenticated user)

clock_action

Clock in, clock out, start break, or end break.

ParameterTypeRequiredDescription
actionenumYesclock_in, clock_out, start_break, or end_break
projectIdstringNoProject ID (for clock_in, if required by org settings)
taskIdstringNoTask ID (for clock_in)
descriptionstringNoWork description (for clock_in)

query_time_entries

List time entries filtered by user, date range, and project. Supports pagination.

ParameterTypeRequiredDescription
userIdstringNoUser ID (defaults to authenticated user for employees)
startDatestringNoStart date filter (YYYY-MM-DD)
endDatestringNoEnd date filter (YYYY-MM-DD)
projectIdstringNoFilter by project ID
pagenumberNoPage number (default: 1)
limitnumberNoResults per page, max 50 (default: 20)

Expenses

query_expenses

List expense reports. Filters by user, status, and date range. Employees see own; managers/admins see others.

ParameterTypeRequiredDescription
userIdstringNoUser ID to filter by
statusstringNoFilter by status: DRAFT, SUBMITTED, PENDING_APPROVAL, APPROVED, REJECTED, PAID, CANCELLED
startDatestringNoStart date (YYYY-MM-DD)
endDatestringNoEnd date (YYYY-MM-DD)
pagenumberNoPage number (default: 1)
limitnumberNoResults per page (default: 20)

get_expense_details

Get full details of an expense report including line items, per diems, and mileage entries.

ParameterTypeRequiredDescription
expenseIdstringYesExpense report ID

get_expense_approvals

List expense reports pending your approval.

Required role: Manager, DEPARTMENT_HEAD, ADMINISTRATOR, or EXECUTIVE

ParameterTypeRequiredDescription
pagenumberNoPage number (default: 1)
limitnumberNoResults per page (default: 20)

approve_or_reject_expense

Approve or reject a submitted/pending expense report.

Required role: Manager, DEPARTMENT_HEAD, ADMINISTRATOR, or EXECUTIVE

ParameterTypeRequiredDescription
expenseIdstringYesExpense report ID
actionenumYesapprove or reject
notesstringNoApprover notes or rejection reason

create_expense

Create a new expense report.

Required role: All roles (company card report type may require ADMINISTRATOR or EXECUTIVE depending on organization settings)

ParameterTypeRequiredDescription
titlestringYesExpense report title
departureDatestringYesDeparture date (YYYY-MM-DD)
returnDatestringYesReturn date (YYYY-MM-DD)
reportTypeenumNoREIMBURSEMENT or COMPANY_CARD (default: REIMBURSEMENT)
descriptionstringNoReport description
tripPurposestringNoPurpose of trip or expense
currencystringNoCurrency code (defaults to organization currency)
departmentIdstringNoDepartment ID
projectIdstringNoProject ID
payableToIdstringNoUser ID the expense is payable to

submit_expense

Submit a draft expense report for approval.

Required role: Report owner, ADMINISTRATOR, or EXECUTIVE

ParameterTypeRequiredDescription
expenseIdstringYesExpense report ID

mark_expense_paid

Mark an approved expense report as paid. Triggers QuickBooks sync if configured.

Required role: ADMINISTRATOR or EXECUTIVE

ParameterTypeRequiredDescription
expenseIdstringYesExpense report ID
paymentReferencestringNoPayment reference number
paymentMethodenumNoDIRECT_DEPOSIT, CHEQUE, WIRE_TRANSFER, CASH, CREDIT_CARD, or OTHER

get_expense_settings

Get organization expense settings including approval rules, receipt requirements, company card configuration, and mileage rates.

No parameters.


Users

get_team_members

List all users in the organization with their role, department, and manager info.

No parameters.

get_user_profile

Get detailed profile for a specific user by ID.

ParameterTypeRequiredDescription
userIdstringYesUser ID

get_departments

List all departments in the organization.

No parameters.


Organization

get_org_info

Get organization settings: name, timezone, currency, leave allowances, fiscal year, etc.

No parameters.

get_public_holidays

List public holidays configured for the organization.

ParameterTypeRequiredDescription
yearnumberNoFilter by year

get_dashboard_stats

Get organization-level stats: total users, departments, leave types, leaves.

Required role: EXECUTIVE

No parameters.

get_notifications

Get the authenticated user's notifications. Supports filtering by read status.

ParameterTypeRequiredDescription
filterenumNoall, unread, or read (default: all)
pagenumberNoPage number (default: 1)
limitnumberNoResults per page (default: 20)

Projects

list_projects

List projects visible to the authenticated user. Admins see all; others see their department + org-wide projects.

ParameterTypeRequiredDescription
statusstringNoFilter by status: ACTIVE, COMPLETED, ARCHIVED, ON_HOLD
includeStatsbooleanNoInclude time tracking stats (default: false)

get_project

Get full project details including tasks, client info, and time stats.

ParameterTypeRequiredDescription
projectIdstringYesProject ID

create_task

Create a new task within a project.

ParameterTypeRequiredDescription
projectIdstringYesProject ID
namestringYesTask name
descriptionstringNoTask description
budgetHoursnumberNoBudget hours for this task
isBillablebooleanNoWhether the task is billable (default: true)

Schedules

query_schedules

List scheduled shifts for a date range. Returns shifts, leaves, and public holidays. Admins see all; department heads see their department.

ParameterTypeRequiredDescription
startDatestringNoStart date (YYYY-MM-DD, defaults to today)
endDatestringNoEnd date (YYYY-MM-DD, defaults to +7 days)
userIdstringNoFilter by user ID
departmentIdstringNoFilter by department ID

create_shift

Create a new scheduled shift. Omit userId to create an open shift.

Required role: ADMINISTRATOR, EXECUTIVE, or DEPARTMENT_HEAD

ParameterTypeRequiredDescription
datestringYesShift date (YYYY-MM-DD)
startTimestringYesStart time (HH:MM, e.g., 09:00)
endTimestringYesEnd time (HH:MM, e.g., 17:00)
userIdstringNoUser ID (omit for open shift)
departmentIdstringNoDepartment ID
shiftTypestringNoREGULAR, MORNING, AFTERNOON, NIGHT, CUSTOM (default: REGULAR)
breakDurationnumberNoBreak duration in minutes (default: 30)
notesstringNoNotes

publish_schedule

Publish schedules for a week, making them visible to employees.

Required role: ADMINISTRATOR or EXECUTIVE

ParameterTypeRequiredDescription
weekStartstringYesMonday of the week to publish (YYYY-MM-DD)
numberOfWeeksnumberNoNumber of weeks to publish, 1-4 (default: 1)
sendNotificationbooleanNoSend email notification to employees (default: true)

Reports

generate_leave_report

Generate a leave report for a date range.

Required role: ADMINISTRATOR or EXECUTIVE

ParameterTypeRequiredDescription
startDatestringNoReport start date (YYYY-MM-DD)
endDatestringNoReport end date (YYYY-MM-DD)
departmentIdstringNoFilter by department
userIdstringNoFilter by user

generate_timesheet_report

Generate a timesheet report for a date range.

Required role: ADMINISTRATOR or EXECUTIVE

ParameterTypeRequiredDescription
startDatestringNoReport start date (YYYY-MM-DD)
endDatestringNoReport end date (YYYY-MM-DD)
userIdstringNoFilter by user
projectIdstringNoFilter by project