Skip to main content
Glama
mikkmihkel

BambooHR MCP Server

by mikkmihkel

List employees

bamboohr_list_employees
Read-onlyIdempotent

Look up employees in BambooHR by name, email, department, or location and get their title, supervisor, and work email. Requires one search filter; returned IDs can be used with other tools.

Instructions

Look up employees in the BambooHR directory with id, name, job title, department, division, location, supervisor and work email. Requires search, department or location — listing the whole company in one call is not allowed — and returns at most the per-call record limit of people. Use the id with the balance and request tools.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
searchNoCase-insensitive substring of the name or work email.
locationNoOnly employees in this location (exact name, case-insensitive).
departmentNoOnly employees in this department (exact name, case-insensitive).

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed4 schema fields changedv4.1.0
    • addedInput schema / additionalProperties
      Added value: +false
    • addedInput schema / properties / department
      Added value: +{
      +  "$ref": "#/properties/search",
      +  "description": "Only employees in this department (exact name, case-insensitive)."
      +}
    • addedInput schema / properties / location
      Added value: +{
      +  "$ref": "#/properties/search",
      +  "description": "Only employees in this location (exact name, case-insensitive)."
      +}
    • addedInput schema / properties / search
      Added value: +{
      +  "description": "Case-insensitive substring of the name or work email.",
      +  "minLength": 1,
      +  "type": "string"
      +}
  2. First observedv3.0.0

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnly, idempotent, openWorld, and non-destructive hints, so the safety profile is covered. The description adds that a filter is required and that a per-call record limit applies, which is useful behavioral context. It does not describe pagination or error handling, but given the annotation coverage, a 3 is appropriate.

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?

The description is three sentences and front-loads the core purpose and fields. The constraint and record limit are clearly stated. The final sentence about using the id with other tools is useful but slightly tangential. Overall, it is efficient and well-structured, though not maximally concise.

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

Completeness3/5

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

No output schema exists, so the description is responsible for clarifying the return. It lists the fields returned (id, name, job title, etc.) and mentions the record limit, which is helpful. However, it does not explain pagination, handling of no results, or whether additional pages can be requested. For a simple list tool this is a moderate gap, so a 3 is given.

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?

The schema already documents all three parameters with descriptions (100% coverage). The description adds critical semantics beyond the schema by stating that at least one of search, department, or location must be provided and that listing the whole company is not allowed. This is meaningful guidance that the schema alone does not convey.

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

Purpose4/5

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

The description clearly states the tool's purpose: looking up employees with specific fields. It mentions the resource (BambooHR directory) and the action (look up/list). However, it doesn't explicitly differentiate from sibling tools like bamboohr_get_employee, which might serve a similar single-record use case. The constraint that a filter is required adds clarity but doesn't name alternatives.

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

Usage Guidelines3/5

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

The description provides a clear usage constraint: at least one of search, department, or location must be supplied, and listing the whole company is disallowed. It also hints at downstream use of the id. However, it does not explicitly say when to choose this tool over siblings like get_employee or list_users, leaving some inference to the agent.

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