leave-pto-requests-approvals

Employee leave and PTO requests: balances, approvals, calendars, and who-is-out summaries.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
93%
Naming quality
80%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~1,937Tokens (tool definitions)
~957 BTypical response size
Moderate attention impact (1.51% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "leave-pto-requests-approvals": {
      "command": "uvx",
      "args": [
        "https://github.com/theluckystrike/mcp-servers/releases/download/v0.22.0/leave.mcpb"
      ]
    }
  }
}

Runnable packages

mcpbhttps://github.com/theluckystrike/mcp-servers/releases/download/v0.22.0/leave.mcpb0.22.0stdio

Remote endpoints

https://mcp.zovo.one/mcp/leave-pto-requests-approvalsstreamable-http

What it can do

Tool inventory

Tools (12)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟡leave_employee_add(name, annualAllowance, carriedOver, email)

Add an employee to the leave tracker and return their EMP-NNNN id. Give their annual paid-leave allowance in whole days and any days carried over from last year. Balances charge approved plus pending leave against allowance + carried-over. Free tier: unlimited.

Input Schema

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "maxLength": 200,
      "description": "Full name, e.g. Taylor Wren"
    },
    "annualAllowance": {
      "type": "integer",
      "minimum": 0,
      "maximum": 1000,
      "description": "Annual paid leave allowance in whole days"
    },
    "carriedOver": {
      "type": "integer",
      "minimum": 0,
      "maximum": 1000,
      "description": "Days carried over from last year (default 0)"
    },
    "email": {
      "type": "string",
      "maxLength": 200,
      "description": "Work email, for calendar lookup"
    }
  },
  "required": [
    "name",
    "annualAllowance"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡leave_request(employee, type, start, end, halfDay, ...)

Create a leave or PTO request and return its LV-NNNN id. type is vacation, sick, unpaid or parental. start and end are inclusive YYYY-MM-DD dates; halfDay charges half a day for the whole span. A pending request is refussed if it would overlap another approved or pending request of the same employee. Free tier: unlimited requests.

Input Schema

{
  "type": "object",
  "properties": {
    "employee": {
      "type": "string",
      "maxLength": 200,
      "description": "The employee id or name"
    },
    "type": {
      "type": "string",
      "enum": [
        "vacation",
        "sick",
        "unpaid",
        "parental"
      ],
      "description": "Kind of leave"
    },
    "start": {
      "type": "string",
      "maxLength": 32,
      "description": "First day off, YYYY-MM-DD, inclusive"
    },
    "end": {
      "type": "string",
      "maxLength": 32,
      "description": "Last day off, YYYY-MM-DD, inclusive"
    },
    "halfDay": {
      "type": "boolean",
      "description": "Half-day charge for the whole span (default false)"
    },
    "reason": {
      "type": "string",
      "maxLength": 2000,
      "description": "Why, shown in reports and calendar"
    }
  },
  "required": [
    "employee",
    "type",
    "start",
    "end"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
leave_approve(request, comment)

Approve a pending leave request by id. Also used to re-open a rejected one. Nothing to approve on an already-approved request.

Input Schema

{
  "type": "object",
  "properties": {
    "request": {
      "type": "string",
      "maxLength": 200,
      "description": "The request id (e.g. LV-0001)."
    },
    "comment": {
      "type": "string",
      "maxLength": 2000,
      "description": "Approval note"
    }
  },
  "required": [
    "request"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴leave_reject(request, reason)

Reject or cancel a leave request by id. A pending or approved request becomes rejected; a rejected one can be reopened via leave_approve. Use leave_cancel (via reject with reason) for voluntary withdrawal.

Input Schema

{
  "type": "object",
  "properties": {
    "request": {
      "type": "string",
      "maxLength": 200,
      "description": "The request id (e.g. LV-0001)."
    },
    "reason": {
      "type": "string",
      "maxLength": 2000,
      "description": "Why"
    }
  },
  "required": [
    "request"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢leave_balance(employee)

Show one employee's leave balance: allowance + carried-over, minus approved and pending, as whole days plus a possible half day. Remaining is rounded down to whole days on the report.

Input Schema

{
  "type": "object",
  "properties": {
    "employee": {
      "type": "string",
      "maxLength": 200,
      "description": "Employee id or name"
    }
  },
  "required": [
    "employee"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢leave_out_range(start, end)

Who is out in a date range: start and end are inclusive YYYY-MM-DD. Each employee appears once per day; pending requests count as a plan. Use for coverage, calendars and absence summaries. Free tier: unlimited.

Input Schema

{
  "type": "object",
  "properties": {
    "start": {
      "type": "string",
      "maxLength": 32,
      "description": "First day, YYYY-MM-DD, inclusive"
    },
    "end": {
      "type": "string",
      "maxLength": 32,
      "description": "Last day, YYYY-MM-DD, inclusive"
    }
  },
  "required": [
    "start",
    "end"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢leave_list(employee, status)

List all employees, or all leave requests (optionally filtered by employee and/or status). Omit the filter to list requests.

Input Schema

{
  "type": "object",
  "properties": {
    "employee": {
      "type": "string",
      "maxLength": 200,
      "description": "Filter requests to one employee"
    },
    "status": {
      "type": "string",
      "enum": [
        "pending",
        "approved",
        "rejected",
        "cancelled"
      ],
      "description": "Filter requests by status"
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡leave_import(csv)

Pro. Bulk-create leave requests from a CSV/TSV. First row is a header: employee,type,start,end,halfDay,status,reason. status may be omitted (defaults to pending) or be approved/rejected. Each request is still checked for overlap conflicts; a conflicting row is reported, not applied. watermark-free, full CRUD.

Input Schema

{
  "type": "object",
  "properties": {
    "csv": {
      "type": "string",
      "maxLength": 200000,
      "description": "CSV text, newline-separated, first row header: employee,type,start,end,halfDay,status,reason"
    }
  },
  "required": [
    "csv"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢leave_export_ics(path)

Pro. Export all APPROVED leave as an .ics calendar (RFC5545). Returns the calendar text; pass path to also write it to a local file. watermark-free.

Input Schema

{
  "type": "object",
  "properties": {
    "path": {
      "type": "string",
      "maxLength": 500,
      "description": "Local .ics file to write"
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢license_status

Report this endpoint's licence state for your token as JSON: the product, the tier free or pro, why it is not Pro, and the checkout URL. Call it to explain a free-tier refusal. No arguments, nothing changes.

Input Schema

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
license_activate(key)

Turn Pro on for this connection with key, an MCPL1.<payload>.<signature> issued at checkout for this server or the bundle. Data under your token stays; a wrong or expired key changes nothing. license_status confirms it.

Input Schema

{
  "type": "object",
  "properties": {
    "key": {
      "type": "string",
      "description": "License key from checkout, MCPL1.<payload>.<signature>"
    }
  },
  "required": [
    "key"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴leave_cancel(request, reason)

Cancel a pending or approved request by id, keeping its record with status cancelled. Differs from leave_reject in intent (voluntary withdrawal). Nothing happened if already cancelled.

Input Schema

{
  "type": "object",
  "properties": {
    "request": {
      "type": "string",
      "maxLength": 200,
      "description": "The request id (e.g. LV-0001)."
    },
    "reason": {
      "type": "string",
      "maxLength": 2000,
      "description": "Why"
    }
  },
  "required": [
    "request"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded12 tools