Skip to main content
Glama

Request time off

hr_request_leave

Ask for time off for someone, from start to end (default: one day), with a half day on the first and/or last day if wanted. Only working days count, minus the holidays of everyone and of their location; leave that crosses into a new leave year counts in each. Refused when it overlaps their pending or approved leave, has no working days, falls outside their employment or they have left, or when a tracked balance (after pending requests) can't take it, unless allow_negative: true (the reply then says how far below 0 it goes). It waits for hr_decide_leave unless approve: true decides at once. Returns the request_id and the balance after it. Costs $0.01 per call; nothing if it fails.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "person": "<person>",
      "leave_type": "<leave_type>",
      "start": "<start>"
    },
    "name": "hr_request_leave"
  }
}

Input Schema

NameRequiredDescriptionDefault
endNoThe last day off, YYYY-MM-DD. Default: start.
noteNo
startYesYYYY-MM-DD
personYesThe person_id, or their work email.
approveNo
half_endNoThe last day is a half day.
half_startNoThe first day is a half day.
leave_typeYesA leave type by name, e.g. "Vacation".
allow_negativeNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations by enumerating every refusal condition (overlap, no working days, outside employment, insufficient balance), the allow_negative override, the approval-wait semantics, the return values (request_id and resulting balance), and even the cost model ($0.01 per call, free on failure). This is exactly the behavioral context annotations cannot convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Dense but front-loaded: the core action comes first, then counting rules, then refusal conditions, then return/cost. The middle sentence is long and clause-heavy but every clause carries distinct information, so nothing is wasteful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 9-parameter mutation with no output schema, the description covers the return payload, the approval pipeline, failure modes, and cost. An agent has everything needed to decide whether to call and how to interpret the result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 67% schema coverage, the description adds real meaning for the undocumented parameters: allow_negative is explained in terms of balance overrun and reply behavior, approve in terms of immediate vs. deferred decision, and half_start/half_end default handling for end. Only note and leave_type resolution are left to the schema alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb and resource: "Ask for time off for someone, from start to end." It immediately scopes the date range, defaults, and half-day behavior, which clearly separates it from siblings like hr_decide_leave and hr_adjust_leave.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly explains the workflow relationship: "It waits for hr_decide_leave unless approve: true decides at once," giving the agent a decision rule between submitting for approval and auto-approving. It does not explicitly contrast with hr_adjust_leave or hr_save_leave_type, so it stops short of full alternative coverage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources